文章目录
- [GOF-23 设计模式分类](#GOF-23 设计模式分类)
- 从封装变化角度对模式分类
-
- 一、组件协作
-
- 定义
- [Template Method(模板方法模式)](#Template Method(模板方法模式))
- [Observer / Event(观察者/事件模式)](#Observer / Event(观察者/事件模式))
- Strategy(策略模式)
- 二、单一职责
- 三、对象创建
-
- [Factory Method(工厂方法模式)](#Factory Method(工厂方法模式))
- [Abstract Factory(抽象工厂模式)](#Abstract Factory(抽象工厂模式))
- Prototype(原型模式)
- Builder(建造者模式)
- 四、对象性能
- 五、接口隔离
- 六、状态变化
- 七、数据结构
-
- Composite(组合模式)
- Iterator(迭代器模式)
- [Chain of Responsibility(责任链模式)](#Chain of Responsibility(责任链模式))
- 八、行为变化
- 九、领域问题
GOF-23 设计模式分类
一、从目的分类
1. 创建型(Creational)模式
- 核心目标:应对需求变化对对象创建时具体类型实现的影响
- 实现方式:将对象创建的职责延迟到子类或其他对象
- 典型模式:工厂方法、抽象工厂、单例、建造者、原型
2. 结构型(Structural)模式
- 核心目标:应对需求变化对对象结构的影响
- 实现方式:通过类继承或对象组合构建更灵活的结构
- 典型模式:适配器、装饰器、代理、组合、桥接
3. 行为型(Behavioral)模式
- 核心目标:应对需求变化对多个交互对象的影响
- 实现方式:通过类继承或对象组合划分职责
- 典型模式:观察者、策略、命令、状态、模板方法
二、从范围分类
1. 类模式(Class Pattern)
- 关注点 :类与子类的静态关系
- 实现方式:依赖继承机制(编译时确定)
- 典型模式:模板方法、工厂方法、抽象工厂
2. 对象模式(Object Pattern)
- 关注点 :对象间的动态关系
- 实现方式:依赖组合/聚合(运行时确定)
- 典型模式:策略、装饰器、观察者、代理
三、分类说明
分类维度 | 创建型 | 结构型 | 行为型 |
---|---|---|---|
目的 | 解决对象创建问题 | 解决对象结构问题 | 解决对象交互与职责划分问题 |
范围 | 可能涉及类模式/对象模式 | 主要为对象模式 | 主要为对象模式 |
从封装变化角度对模式分类
一、组件协作
定义
现代软件专业分工之后的第一个结果是"框架与应用程序的划分","组件协作"模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。
Template Method(模板方法模式)
定义算法骨架,延迟部分步骤到子类。
Observer / Event(观察者/事件模式)
一对多依赖关系,状态变化时通知观察者。
Strategy(策略模式)
封装可替换的算法策略,动态切换行为。
二、单一职责
Decorator(装饰器模式)
动态添加职责,避免类爆炸。
Bridge(桥接模式)
分离抽象与实现,独立扩展两者。
三、对象创建
Factory Method(工厂方法模式)
定义对象创建接口,由子类实现具体创建。
Abstract Factory(抽象工厂模式)
创建一组相关或依赖的对象族。
Prototype(原型模式)
通过复制原型对象创建新实例。
Builder(建造者模式)
分步构建复杂对象。
四、对象性能
Singleton(单例模式)
确保类只有一个实例,全局访问点。
Flyweight(享元模式)
共享细粒度对象,减少内存消耗。
五、接口隔离
Façade(外观模式)
简化复杂子系统的接口。
Proxy(代理模式)
控制对目标对象的访问。
Mediator(中介者模式)
集中管理对象交互,降低耦合。
Adapter(适配器模式)
适配不兼容接口,促进复用。
六、状态变化
Memento(备忘录模式)
保存和恢复对象状态。
State(状态模式)
对象行为随内部状态改变。
七、数据结构
Composite(组合模式)
树形结构组合对象。
Iterator(迭代器模式)
顺序访问聚合对象元素。
Chain of Responsibility(责任链模式)
链式传递请求,灵活处理。
八、行为变化
Command(命令模式)
将请求封装为对象,支持参数化和日志记录。
Visitor(访问者模式)
对元素集合执行操作,分离算法与结构。
九、领域问题
Interpreter(解释器模式)
定义语言语法并解释执行。