设计模式解决的是反复出现的协作与职责划分问题不是语法技巧。在 C 里还要和这些习惯一起看RAII资源与生命周期构造拿资源、析构释放常替代或配合某些「对象管理」类模式。值语义 vs 指针语义接口用引用/智能指针还是值类型会直接影响模式的写法。模板与策略很多「多态策略」在 C 里既可以用虚函数也可以用模板静态多态。不必死记 UML重点是在什么约束下、要解决什么问题、代价是什么。建议学习顺序由易到难、由常用到进阶创建型工厂方法、抽象工厂隐藏具体类型、便于换实现。建造者参数多、组合步骤复杂时如配置、协议消息。单例了解即可现代 C 里要警惕全局状态和测试难度很多场景用依赖注入更合适。结构型适配器、装饰器、外观对接旧接口、层层加功能、简化子系统工程里极常见。代理延迟创建、访问控制、远程/缓存等和智能指针、PIMPL 有时会一起想。行为型观察者、策略、命令、状态、模板方法和 GUI、游戏、命令行、状态机、撤销/重做都很贴。迭代器C 标准库已经在用学模式时对照begin/end和 range-for 即可。再补访问者、中介者、备忘录 等遇到 AST、复杂 UI 协作、撤销栈时再深入。每个模式建议怎么练高效对每一个模式用同一个小题目做三件事不用模式写出能工作的代码标出「if/else 膨胀、改一处动十处、难测」的地方。引入模式只改结构行为不变。写一两句取舍多了哪些类/间接层换来了什么扩展点、稳定性、可测性。这样比背类图有用得多。C 里的小提示优先组合继承不是模式的终点很多「装饰器 / 策略」用持有接口或std::function就能表达清楚。智能指针工厂返回unique_ptr基类指针很常见共享所有权再用shared_ptr并想清楚所有权边界。非虚接口NVI学 模板方法 时对照 C 里「public 非虚调用 private 虚」的惯用法。CRTP / 策略的静态版学到 策略 时可以对比「虚函数策略 vs 模板策略」的性能与编译依赖差异。可选书单与资料Design PatternsGoF经典偏 Smalltalk/C 年代仍值得翻「动机与适用性」章节。Head First Design Patterns入门叙事友好示例多为 Java但思路可迁移。现代补充Herb Sutter / Scott Meyers 关于接口设计、PIMPL、RAII 的文章和书和模式是互补的。
设计模式学习介绍
设计模式解决的是反复出现的协作与职责划分问题不是语法技巧。在 C 里还要和这些习惯一起看RAII资源与生命周期构造拿资源、析构释放常替代或配合某些「对象管理」类模式。值语义 vs 指针语义接口用引用/智能指针还是值类型会直接影响模式的写法。模板与策略很多「多态策略」在 C 里既可以用虚函数也可以用模板静态多态。不必死记 UML重点是在什么约束下、要解决什么问题、代价是什么。建议学习顺序由易到难、由常用到进阶创建型工厂方法、抽象工厂隐藏具体类型、便于换实现。建造者参数多、组合步骤复杂时如配置、协议消息。单例了解即可现代 C 里要警惕全局状态和测试难度很多场景用依赖注入更合适。结构型适配器、装饰器、外观对接旧接口、层层加功能、简化子系统工程里极常见。代理延迟创建、访问控制、远程/缓存等和智能指针、PIMPL 有时会一起想。行为型观察者、策略、命令、状态、模板方法和 GUI、游戏、命令行、状态机、撤销/重做都很贴。迭代器C 标准库已经在用学模式时对照begin/end和 range-for 即可。再补访问者、中介者、备忘录 等遇到 AST、复杂 UI 协作、撤销栈时再深入。每个模式建议怎么练高效对每一个模式用同一个小题目做三件事不用模式写出能工作的代码标出「if/else 膨胀、改一处动十处、难测」的地方。引入模式只改结构行为不变。写一两句取舍多了哪些类/间接层换来了什么扩展点、稳定性、可测性。这样比背类图有用得多。C 里的小提示优先组合继承不是模式的终点很多「装饰器 / 策略」用持有接口或std::function就能表达清楚。智能指针工厂返回unique_ptr基类指针很常见共享所有权再用shared_ptr并想清楚所有权边界。非虚接口NVI学 模板方法 时对照 C 里「public 非虚调用 private 虚」的惯用法。CRTP / 策略的静态版学到 策略 时可以对比「虚函数策略 vs 模板策略」的性能与编译依赖差异。可选书单与资料Design PatternsGoF经典偏 Smalltalk/C 年代仍值得翻「动机与适用性」章节。Head First Design Patterns入门叙事友好示例多为 Java但思路可迁移。现代补充Herb Sutter / Scott Meyers 关于接口设计、PIMPL、RAII 的文章和书和模式是互补的。