23种设计模式
2026/1/15大约 3 分钟

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
学习资源
| 资源类型 | 链接 |
|---|---|
| 📖 菜鸟教程 | 设计模式 |
| 📖 Refactoring Guru | Design Patterns |
| 📖 图说设计模式 | design-patterns |
核心知识点
- 创建型模式(5种) - 单例、工厂方法、抽象工厂、建造者、原型
- 结构型模式(7种) - 适配器、桥接、组合、装饰器、外观、享元、代理
- 行为型模式(11种) - 责任链、命令、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者、解释器
- 设计原则 - 单一职责、开闭原则、里氏替换、依赖倒置、接口隔离、迪米特法则
模式分类
模式速查表
🏗️ 创建型模式(5种)
关注对象的创建机制,将对象的创建与使用分离
| 模式 | 一句话描述 | 典型场景 |
|---|---|---|
| 单例 | 确保一个类只有一个实例 | 配置管理、连接池 |
| 工厂方法 | 让子类决定实例化哪个类 | 框架扩展、插件系统 |
| 抽象工厂 | 创建一系列相关对象 | 跨平台UI、数据库适配 |
| 建造者 | 分步骤构建复杂对象 | 复杂对象构建、链式调用 |
| 原型 | 通过克隆创建对象 | 对象复制、缓存 |
🔗 结构型模式(7种)
关注类和对象的组合,通过组合获得更大的结构
| 模式 | 一句话描述 | 典型场景 |
|---|---|---|
| 适配器 | 接口转换 | 旧系统集成、第三方库适配 |
| 桥接 | 分离抽象和实现 | 多维度变化、跨平台 |
| 组合 | 树形结构处理 | 文件系统、组织架构 |
| 装饰器 | 动态添加职责 | IO流、功能增强 |
| 外观 | 简化子系统接口 | 复杂系统封装、API网关 |
| 享元 | 共享细粒度对象 | 字符串池、缓存 |
| 代理 | 控制对象访问 | 延迟加载、权限控制、AOP |
🎭 行为型模式(11种)
关注对象之间的通信,描述对象如何协作完成任务
| 模式 | 一句话描述 | 典型场景 |
|---|---|---|
| 责任链 | 请求沿链传递 | 审批流程、过滤器链 |
| 命令 | 请求封装为对象 | 撤销/重做、任务队列 |
| 迭代器 | 顺序访问集合 | 集合遍历 |
| 中介者 | 对象间解耦通信 | 聊天室、MVC |
| 备忘录 | 保存和恢复状态 | 撤销功能、快照 |
| 观察者 | 一对多依赖通知 | 事件系统、消息订阅 |
| 状态 | 状态改变行为 | 状态机、工作流 |
| 策略 | 算法可替换 | 支付方式、排序算法 |
| 模板方法 | 算法骨架 | 框架钩子、流程定义 |
| 访问者 | 分离数据结构和操作 | 编译器、报表生成 |
| 解释器 | 语法解释 | DSL、表达式解析 |
