计算机
c base
c++ 基础 作用域及生命周期
c++ template
c++ 内存视角
c++ 函数
c++ 基础 基础语法
c++ 性能
c++ 类 基础
c++ 类 对象模型 类析构
c++ 类 设计模式
C++ STL
cmake
CMAKE环境搭建 windows
创建第一个cmakelists.txt
构建稍复杂的项目
动态链接库
EX1
EX1 START
EX1 ANSWER
EX2
EX2 START
EX2 ANSWER
EX3
EX3 START
EX3 ANSWER
变量
控制流程
函数和宏
查找和使用外部库
生成器表达式
qt
qt c++
qt index
qt qml quick
qt ui
qt 多线程
理解QObject 1
理解QObject 4
C++ 技巧 反射
理解QObject 2
理解QObject 3
理解QObject 6
理解 QObject 5
QCoreApplication
QApplication
Q_OBJECT
数据结构
PC问题监控及排查
PC程序性能优化
OS
TOOL
编程漫谈
sealos+frp,搭建内网穿透
host主机配置
C++实战 主题
多线程
生产者-消费者流水线
IO
网络
Bilinotes搭建
编译原理
WEB开发
TS
HTML CSS JAVASCRIPT
OPENGL绘图
设计模式
计算机基础
CPU
微机原理
本站点使用 MrDoc 构建
-
+
设计模式
# 设计模式全览 > 经典 GoF(Gang of Four)设计模式共 \*\*23 种\*\*,分为创建型、结构型、行为型三大类。 > 文末附现代常用的扩展模式。 > ## 一、创建型模式(Creational Patterns,5 种) 关注**对象的创建机制**,把对象的创建与使用分离。 | 模式 | 英文名 | 一句话说明 | 典型场景 | |------|--------|-----------|----------| | 单例模式 | Singleton | 保证一个类只有一个实例,并提供全局访问点 | 配置管理器、连接池、日志对象 | | 工厂方法模式 | Factory Method | 定义创建对象的接口,让子类决定实例化哪个类 | 框架中可扩展的产品创建 | | 抽象工厂模式 | Abstract Factory | 创建一系列相关或相互依赖的对象家族 | 跨平台 UI 组件、数据库驱动族 | | 建造者模式 | Builder | 分步构建复杂对象,使构建与表示分离 | 组装复杂配置对象、SQL 构建器 | | 原型模式 | Prototype | 通过复制现有对象来创建新对象 | 对象创建成本高、需要动态克隆 | ## 二、结构型模式(Structural Patterns,7 种) 关注**类和对象的组合**,形成更大的结构。 | 模式 | 英文名 | 一句话说明 | 典型场景 | |------|--------|-----------|----------| | 适配器模式 | Adapter | 转换接口,使不兼容的类能协同工作 | 旧系统对接新接口、第三方库适配 | | 桥接模式 | Bridge | 将抽象与实现分离,使二者可独立变化 | 多维度变化的系统(如形状×颜色) | | 组合模式 | Composite | 把对象组合成树形结构,统一处理单个和组合对象 | 文件系统、UI 树、组织架构 | | 装饰器模式 | Decorator | 动态给对象添加职责,比继承更灵活 | Java I/O 流、权限包装、缓存包装 | | 外观模式 | Facade | 为子系统提供统一的高层接口 | 简化复杂库调用、服务门面 | | 享元模式 | Flyweight | 共享细粒度对象,减少内存占用 | 字符串池、游戏棋子、图标缓存 | | 代理模式 | Proxy | 为对象提供代理,控制对它的访问 | 远程代理、虚拟代理、安全代理、AOP | ## 三、行为型模式(Behavioral Patterns,11 种) 关注**对象之间的职责分配与通信**。 | 模式 | 英文名 | 一句话说明 | 典型场景 | |------|--------|-----------|----------| | 责任链模式 | Chain of Responsibility | 把请求沿处理链传递,直到被处理 | 审批流、过滤器链、日志级别 | | 命令模式 | Command | 把请求封装成对象,支持撤销、排队、日志 | 撤销重做、任务队列、宏命令 | | 解释器模式 | Interpreter | 定义语言的文法并解释句子 | 表达式求值、规则引擎、SQL 解析 | | 迭代器模式 | Iterator | 顺序访问聚合对象元素而不暴露内部结构 | 集合遍历、统一遍历接口 | | 中介者模式 | Mediator | 用中介对象封装对象间的交互,降低耦合 | 聊天室、UI 控件协调、航空管制 | | 备忘录模式 | Memento | 保存并恢复对象状态,不破坏封装 | 撤销、快照、事务回滚 | | √观察者模式 | Observer | 对象状态变化时通知依赖它的对象 | 事件监听、发布订阅、MVC | | 状态模式 | State | 对象内部状态改变时改变其行为 | 订单状态机、游戏角色状态 | | √策略模式 | Strategy | 封装可互换的算法族,运行时切换 | 支付方式、排序算法、折扣计算 | | 模板方法模式 | Template Method | 定义算法骨架,把某些步骤延迟到子类 | 框架钩子、流程骨架、生命周期 | | 访问者模式 | Visitor | 在不改变元素类的前提下定义新操作 | 编译器 AST 遍历、报表统计 | ## 四、总览 | 分类 | 数量 | 模式 | |------|------|------| | 创建型 | 5 | 单例、工厂方法、抽象工厂、建造者、原型 | | 结构型 | 7 | 适配器、桥接、组合、装饰器、外观、享元、代理 | | 行为型 | 11 | 责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者 | | **合计** | **23** | | ## 五、现代常用扩展模式(非 GoF) | 模式 | 英文名 | 说明 | 场景 | |------|--------|------|------| | MVC | Model-View-Controller | 分层架构模式 | Web、桌面 UI | | MVP | Model-View-Presenter | 分层架构模式 | 桌面、移动 UI | | MVVM | Model-View-ViewModel | 数据绑定架构模式 | 前端框架、移动 UI | | 依赖注入 | Dependency Injection / IoC | 由容器管理对象依赖 | Spring、Angular | | 仓储模式 | Repository | 封装数据访问逻辑 | DDD、持久层 | | 工作单元 | Unit of Work | 管理一组事务性操作 | ORM、事务管理 | | 规格模式 | Specification | 把业务规则封装成可组合对象 | 复杂查询、校验规则 | | 空对象模式 | Null Object | 用空对象替代 null,避免判空 | 减少空指针判断 | | 对象池模式 | Object Pool | 复用昂贵对象 | 线程池、连接池 | | 断路器模式 | Circuit Breaker | 防止故障级联 | 微服务容错 | | CQRS | Command Query Responsibility Segregation | 命令查询职责分离 | 复杂领域读写分离 | | Saga | Saga | 分布式事务补偿 | 微服务长事务 |
peipeo
2026年9月10日 19:34
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码