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 | Façade | Factory Method | Composite | |
Observer / Event | Proxy | Abstract Factory | Iterator | |
Strategy | Mediator | Prototype | Chain of Resposibility | |
Adapter | Builder | Decorator |