观前语
先学习七大原则,明白设计模式中为什么要这么设计;再学习各个设计模式,对照着设计原则,明白为什么设计模式为什么要这么设计,主要要解决什么问题。
不要拘泥于具体模式里面的要求,不同的语言也会有所不同。例如,Java 里面有抽象类,而 Go 没有,没必要太刻板。学习设计模式建议要根据自己日常学习,使用的语言进行对应学习。
设计模式分类
| 范围-目的 | 创建型模式 | 结构型模式 | 行为型模式 |
|---|---|---|---|
| 类模式 | 工厂模式 | (class-)适配器 | 模板模式、解释器 |
| 对象模式 | 单例、原型、抽象工厂、生成者 | (instance-)适配器、代理、桥接、装饰、外观、享元、组合 | 策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录 |
按照目的分类
- 创建型 - 更加关注的是如何创建对象,将对象的创建和使用进行分离
- 结构型 - 如何将类或者对象按照某种形式组合成一个更大的结构
- 行为型 - 类和对象之间如何相互协同,完成单个对象无法独立完成的任务,以及职责划分
按照范围分类
- 类 - 主要是处理类和子类之间的关系,这些关系是通过继承来建立,在编译的时候就已经明确确定下来了
- 对象 - 主要是处理对象之间的关系,可以通过组合、聚合等方式来建立,具有动态性,运行时刻是可以进行改变
文章索引 Index
设计原则
- 设计模式中七大原则【22-0130】
创造型模式
- 单例模式 | Singleton【22-0130】
- 原型模式
- 工厂模式 & 抽象工厂 | Factory 【22-0129】
- 生成者模式 | Builder 【22-0827】
结构型模式
- 适配器模式
- 代理模式
- 桥接模式 | Bridge【22-0819】
- 装饰模式
- 外观模式 or 门面模式
- 享元模式 | Flyweight【22-0810】
- 组合模式
行为模式
- 模板模式
- 解释器模式
- 策略模式
- 命令模式
- 责任链模式
- 状态模式 | State【22-0817】
- 观察者模式
- 中介者模式
- 迭代器模式
- 访问者模式 | Visistor【22-0806】
- 备忘录模式 | Memo【22-0809】