23 种经典设计模式的名称、意图及适用场景概述

一、创建型模式(Creational Patterns)

1. 单例模式(Singleton Pattern)

  • 意图:保证一个类仅有一个实例,并提供全局访问点。
  • 适用场景:需要全局唯一实例,如数据库连接池、线程池、配置管理器、日志记录器等。

2. 工厂方法模式(Factory Method Pattern)

  • 意图:定义一个创建对象的接口,由子类决定实例化具体类。
  • 适用场景:对象创建复杂,需根据条件动态创建不同对象,如根据操作系统创建不同 UI 组件。

3. 抽象工厂模式(Abstract Factory Pattern)

  • 意图:提供创建一系列相关或相互依赖对象的接口,无需指定具体类。
  • 适用场景:需要创建多个产品族,如不同操作系统风格的按钮、文本框等。

4. 建造者模式(Builder Pattern)

  • 意图:将复杂对象的构建与其表示分离,使同样构建过程可创建不同表示。
  • 适用场景:复杂对象分步构建,如游戏角色创建、复杂报表生成。

5. 原型模式(Prototype Pattern)

  • 意图:通过复制现有实例创建新对象,而无需通过类实例化。
  • 适用场景:对象创建成本高且需大量相似对象,如游戏道具克隆。

二、结构型模式(Structural Patterns)

6. 适配器模式(Adapter Pattern)

  • 意图:将一个类的接口转换成客户端期望的另一种接口,使原本不兼容的类可以协同工作。
  • 适用场景:旧系统接口与新功能兼容、第三方接口转换。

7. 桥接模式(Bridge Pattern)

  • 意图:将抽象部分与实现部分分离,使它们可以独立变化。
  • 适用场景:一个类有多个变化维度,如跨平台 GUI 系统。

8. 组合模式(Composite Pattern)

  • 意图:将对象组合成树形结构表示"部分-整体"层次,使单个对象和组合对象使用一致。
  • 适用场景:树形结构,如文件系统、组织架构。

9. 装饰器模式(Decorator Pattern)

  • 意图:动态地给对象添加额外职责,比子类化更灵活。
  • 适用场景:动态扩展对象功能,如 IO 流处理、加密压缩。

10. 外观模式(Facade Pattern)

  • 意图:为子系统提供统一的高层接口,简化访问。
  • 适用场景:复杂子系统简化,如统一 API 封装。

11. 享元模式(Flyweight Pattern)

  • 意图:通过共享对象减少内存占用,支持大量细粒度对象。
  • 适用场景:大量相似对象,如文本编辑器字符、围棋棋子。

12. 代理模式(Proxy Pattern)

  • 意图:为其他对象提供代理以控制对它的访问。
  • 适用场景:访问控制、延迟加载、远程代理,如数据库访问代理、图片懒加载。

三、行为型模式(Behavioral Patterns)

13. 策略模式(Strategy Pattern)

  • 意图:定义一系列算法,封装并使它们可互换。
  • 适用场景:多种算法可替换,如支付方式、排序算法。

14. 模板方法模式(Template Method Pattern)

  • 意图:定义算法骨架,将一些步骤延迟到子类。
  • 适用场景:算法结构固定,部分步骤变化,如数据处理流程。

15. 观察者模式(Observer Pattern)

  • 意图:定义对象间一对多依赖,当一个对象状态改变,所有依赖者都会收到通知。
  • 适用场景:事件监听、消息通知、MVC 架构。

16. 迭代器模式(Iterator Pattern)

  • 意图:提供一种方法顺序访问聚合对象元素,不暴露内部表示。
  • 适用场景:集合遍历,如 Java 集合框架。

17. 责任链模式(Chain of Responsibility Pattern)

  • 意图:将请求沿链传递,直到有对象处理。
  • 适用场景:多级审批、Java Web 过滤器。

18. 命令模式(Command Pattern)

  • 意图:将请求封装为对象,可用不同请求参数化、排队或记录日志。
  • 适用场景:撤销/重做、宏命令、GUI 按钮事件。

19. 备忘录模式(Memento Pattern)

  • 意图:捕获对象内部状态并在以后恢复,而不破坏封装。
  • 适用场景:状态保存与恢复,如文本编辑器撤销。

20. 状态模式(State Pattern)

  • 意图:允许对象在内部状态改变时改变其行为。
  • 适用场景:对象行为依赖状态,如订单状态流转。

21. 访问者模式(Visitor Pattern)

  • 意图:在不修改对象结构的前提下,定义作用于这些对象的新操作。
  • 适用场景:数据结构稳定,操作易变,如编译器语法树处理。

22. 中介者模式(Mediator Pattern)

  • 意图:用一个中介对象封装一系列对象交互,降低耦合。
  • 适用场景:多对象复杂交互,如聊天室、GUI 组件协调。

23. 解释器模式(Interpreter Pattern)

  • 意图:给定语言,定义其文法表示,并定义解释器解释句子。
  • 适用场景:简单语法解析,如正则表达式、SQL 解析。
相关推荐
phdsky2 小时前
【设计模式】建造者模式
c++·设计模式·建造者模式
小毛驴8502 小时前
软件设计模式-装饰器模式
python·设计模式·装饰器模式
phdsky4 小时前
【设计模式】代理模式
设计模式·代理模式
ZHE|张恒15 小时前
设计模式(十二)代理模式 — 用代理控制访问,实现延迟加载、权限控制等功能
设计模式·代理模式
SakuraOnTheWay15 小时前
《深入设计模式》学习(1)—— 深入理解OOP中的6种对象关系
设计模式
q***718515 小时前
Java进阶-SpringCloud设计模式-工厂模式的设计与详解
java·spring cloud·设计模式
白衣鸽子15 小时前
告别参数地狱:业务代码中自定义Context的最佳实践
后端·设计模式·代码规范
帅中的小灰灰1 天前
C++编程建造器设计模式
java·c++·设计模式
ZHE|张恒1 天前
设计模式(十)外观模式 — 提供统一入口,简化复杂系统的使用
设计模式·外观模式
howcode1 天前
女友去玩,竟带回一道 “虐哭程序员” 的难题
后端·设计模式·程序员