23 种设计模式
分为三大类:创建型、结构型、行为型。
一、创建型模式(负责对象怎么创建)
单例模式 Singleton
一个类只能创建唯一一个实例,全局访问。
工厂方法 Factory Method
定义一个接口,让子类决定创建哪一种对象。
抽象工厂 Abstract Factory
创建一组相关的对象家族。
建造者 Builder
分步构建一个复杂对象,分离构造和表示。
原型 Prototype
通过克隆(拷贝)已有对象生成新对象。
👉 重点:单例、工厂、建造者
二、结构型模式(把类 / 对象组合起来,搭架构)
适配器 Adapter
做一个 “转换器”,把一个接口转成另一个,适配旧代码。
装饰器 Decorator
不修改原有类,动态给对象增加新功能。
代理 Proxy
用一个代理对象,控制对真实对象的访问(延时加载、权限校验)。
外观 Facade(门面)
给一堆复杂子系统提供一个简单统一入口,对外隐藏复杂细节。
桥接 Bridge
将抽象和实现分离,二者可以独立变化。
组合 Composite
树形结构,容器对象和叶子对象统一对待,比如文件目录树。
享元 Flyweight
共享大量重复对象,节省内存。
👉 高频:适配器、装饰器、代理、外观
三、行为型模式(控制对象之间怎么交互、流程怎么跑)
观察者 Observer(订阅‑发布)
一个对象状态变了,自动通知所有订阅它的对象。网络模块、事件回调最常见。
策略 Strategy
把一组算法封装起来,可以互相替换,运行时切换算法。
状态 State
对象内部状态改变时,行为跟着改变。
命令 Command
将请求封装成对象,可以排队、撤销、重做。
模板方法 Template Method
父类定好算法骨架,具体步骤交给子类实现。
迭代器 Iterator
遍历容器里面的元素,不暴露容器内部结构。C++ STL 迭代器就是这个。
责任链 Chain of Responsibility
请求沿着一条处理链依次传递,直到有人处理它。
中介者 Mediator
对象之间不直接通信,全部通过中介中转,解耦。
备忘录 Memento
保存对象历史状态,可以回滚撤销。
访问者 Visitor
在不修改类的前提下,新增对元素的操作。
解释器 Interpreter
自定义语法解析,极少用到。
👉 重中之重:观察者、策略、模板方法
23 种设计模式速记背诵表
一、创建型(5 个):管对象怎么创建
表格
二、结构型(7 个):管类 / 对象怎么组合
表格
三、行为型(11 个):管对象之间怎么通信、行为怎么分配
表格
C++ 后端优先级
⭐⭐⭐⭐⭐最高频
单例、工厂方法、策略、观察者、装饰器
⭐⭐⭐⭐高频
代理、建造者、责任链、模板方法、状态模式
⭐⭐⭐低频
抽象工厂、原型、适配器、外观、组合、迭代器、备忘录
⭐⭐冷门
桥接、享元、中介者、访问者、解释器