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 解析。
相关推荐
廋到被风吹走6 小时前
【Java】常用设计模式及应用场景详解
java·开发语言·设计模式
Jaycee青橙9 小时前
软件设计模式详解
设计模式
alibli13 小时前
一文学会设计模式之结构型模式及最佳实现
c++·设计模式
电子科技圈16 小时前
SiFive车规级RISC-V IP获IAR最新版嵌入式开发工具全面支持,加速汽车电子创新
嵌入式硬件·tcp/ip·设计模式·汽车·代码规范·risc-v·代码复审
七月丶18 小时前
Cloudflare 🌏 中国大陆网络访问优化 - 0元成本
人工智能·react.js·设计模式
筏.k18 小时前
C++ 设计模式系列:单例模式
c++·单例模式·设计模式
__万波__18 小时前
二十三种设计模式(十二)--代理模式
java·设计模式·代理模式
郝学胜-神的一滴19 小时前
Linux线程编程:从原理到实践
linux·服务器·开发语言·c++·程序人生·设计模式·软件工程
我爱学习_zwj19 小时前
前端设计模式:轻量级实战指南
设计模式·前端框架·状态模式
还是大剑师兰特19 小时前
前端设计模式:详解、应用场景与核心对比
前端·设计模式·大剑师