本仓库用于系统性学习与对照实现设计模式:同一模式分别用 C++ 与 Go 实现,配合原理说明、对比与小练习。
- 目标:理解每个模式的动机、结构、适用场景;能在 C++ 与 Go 中各写出一个最小可运行示例,并能进行语言差异对比。
- 顺序(建议 3–4 周):
- 创建型:Singleton, Factory Method, Abstract Factory, Builder, Prototype
- 结构型:Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
- 行为型:Strategy, Template Method, Observer, Command, Iterator, State, Visitor, Chain of Responsibility, Mediator, Memento, Interpreter
- 选修与并发:Go 的 Pipeline/Worker Pool/Context 取消;C++ 的线程池、future/promise 等
- 每个模式统一模板:
- README:动机、UML/结构、实现要点(C++ / Go 差异)、适用与不适用场景、复杂度与陷阱
- 代码:一份 C++ 示例与一份 Go 示例,均可直接运行
cpp/
README.md
patterns/
creational/
singleton/
singleton.cpp
README.md
behavioral/
strategy/
strategy.cpp
README.md
go/
README.md
patterns/
creational/
singleton/
main.go
README.md
behavioral/
strategy/
main.go
README.md
- 学习顺序:先读模式 README,再跑 C++,再跑 Go,最后做对照与总结。
- 提交建议:每完成一个模式,补充对应 README 的“对照总结”一节,记录踩坑点与语言差异。
命令速查与新增模式模板见:
docs/COMMANDS.md模式 README 模板:docs/PATTERN_TEMPLATE.md
- C++(使用 CMake + clang):
- 配置:
cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++ - 构建:
cmake --build build -j - 运行:
./build/cpp/dp_singleton、./build/cpp/dp_strategy
- 配置:
- Go(需要 Go 1.20+):
- Singleton:
go run go/patterns/creational/singleton/main.go - Strategy:
go run go/patterns/behavioral/strategy/main.go
- Singleton:
- 先“为什么”(痛点/动机)→ 再“怎么做”(结构/角色)→ 最后“何时用/不用”。
- 对照要点:
- C++:对象生命周期、所有权、RAII、继承/多态与模板、线程安全(local static、std::call_once)
- Go:接口组合、函数式策略、并发原语(goroutine、channel、sync.Once、context)
- 每个模式尝试回答:
- 我在项目里何时会用它?替代方案是?隐藏代价是什么?
开箱已提供 Singleton 与 Strategy 双语示例,后续可按模板扩展其它模式。