Tsai笔记:C++设计模式学习(1)—— 设计模式介绍及分类
设计模式的系列笔记链接如下:
Tsai笔记:C++设计模式学习(1)—— 设计模式介绍及分类
Tsai笔记:C++设计模式学习(2)—— 单例模式(Singleton)
Tsai笔记:C++设计模式学习(3)—— 享元模式(Flyweight)
Tsai笔记:C++设计模式学习(4)—— 工厂模式方法(Factory Method)
Tsai笔记:C++设计模式学习(5)—— 抽象工厂模式(Abstract Factory)
Tsai笔记:C++设计模式学习(6)—— 原型模式(ProtoType)
Tsai笔记:C++设计模式学习(7)—— 构建器(Builder)
一、什么是设计模式
“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。 ——Christopher Alexander
二、复杂性的根本原因及如何解决复杂性
1、复杂性的根本原因
a、客户需求的变化 b、技术平台的变化 c、开发团队的变化 d、市场环境的变化分解 e、。。。
2、如何解决复杂性
a、分解: 人们面对复杂性有一个常见的做法:即分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。 b、抽象: 更高层次来讲,人们处理复杂性有一个通用的技术,即抽象。由于不能掌握全部的复杂对象,我们选择忽视它的非本质细节,而去处理泛化和理想化了的对象模型。
三、设计模式目标
实现复用!!!!!!
四、深入理解面向对象
a、向下:深入理解三大面向对象机制 封装,隐藏内部实现 继承,复用现有代码 多态,改写对象行为 b、向上:深刻把握面向对象机制所带来的抽象意义,理解如何使用这些机制来表达现实世界,掌握什么是“好的面向对象设计”
五、从封装变化角度对模式分类
对象性能 | 单一职责 | 状态变化 | 行为变化 | 领域问题 | Singleton | Bridge | State | Command | Interpreter | Flyweight | Decorator | Memento | Visitor | | 组件协作 | 接口隔离 | 对象创建 | 数据结构 | | Template Method | Faade | Factory Method | Composite | | Observer / Event | Proxy | Abstract Factory | Iterator | | Strategy | Mediator | Prototype | Chain of Resposibility | | | Adapter | Builder | Decorator | |
六、重构关键技法
静态 ------> 动态 早绑定 ------> 晚绑定 继承 ------> 组合 编译时依赖 ------> 运行时依赖 紧耦合 ------> 松耦合 |