设计模式
推荐阅读 ohmyfish.net 未来更新会先在ohmyfish.net
更新,等到一定规模会发到平台上,如果有修改和补充也会在ohmyfish
上进行。
目标
- 理解松耦合设计思想
- 掌握面向对象设计原则
- 掌握重构技法改善设计
- 掌握GOF核心设计模式
参考资料
- GOF的《设计模式》
- 李建忠的C++设计模式课程 课程笔记来源于李建忠老师的课程
- Cpp-Design-Patterns 代码仓库 代码资料取自这位前辈的仓库
感谢前辈们提供的资料,当前版本主要是认识设计模式,所以并没有太多的创新。未来会在ohmyfish
上根据其他书籍和项目经历进行补充。
前言
在学习设计模式之前我觉得,有必要了解一下设计模式是干什么用的。
为什么我们需要学习(设计)模式
设计模式有何不妥,所谓的荼毒体现在哪?
我个人认为有以下几点需要牢记的
- 不要滥用设计模式,不要为了使用设计模式而使用设计模式,设计模式是用来解决问题的
- 设计模式可以认为是一些经验总结或者说是一些建议,不是什么非常牛逼的东西,不要认为学了设计模式就高人一等
- 学习设计模式可以减少一些沟通成本,方便我们理解代码,当然有可能让代码逻辑变得复杂一些,你需要自己权衡
- 设计模式应该重点学习解决问题的方法策略,而不是代码
- 设计模式可以算是对编程语言本身的一种弥补,有的新语言可能在被设计时就已经通过语法糖帮你实现了某些设计模式
概览
内容
TIP:不常用一般指在 C++ 情况下,某些设计模式被语言机制直接实现了,其他语言可能就变成很常用的了。当然有可能确实随着时代发展用的少了,或者不再单独拿出来讲。
- 序章
- 要点和常见误区
- 组件协作
- Template Method 模板方法
- Observer/Event 观察者模式
- Strategy 策略模式
- 单一职责
- Decorator 装饰模式
- Bridge 桥模式
- 对象创建
- Factory Method 工厂方法
- Abstract Factory 抽象工厂
- Prototype 原型模式[不常用]
- Builder 构建器[不常用]
- 对象性能
- Singleton 单例模式
- Flyweight 享元模式
- 接口隔离
- Facade 门面模式
- Proxy 代理模式
- Mediator 中介者[不常用]
- Adapter 适配器模式
- 状态变化
- Memento 备忘录[不常用]
- State 状态模式
- 数据结构
- Composite 组合模式
- Iterator 迭代器模式[不常用]
- Chain of Resposibility 责任链模式[不常用]
- 行为变化
- Command 命令模式[不常用]
- Visitor 访问者模式[不常用]
- 领域问题
- Interpreter 解析器模式[不常用]