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 解析。
相关推荐
数据知道18 小时前
Go语言设计模式:适配器模式详解
设计模式·golang·建造者模式
执笔论英雄18 小时前
【设计模式】策略类和依赖注入
设计模式
手把手入门1 天前
23种设计模式
设计模式
qqxhb1 天前
系统架构设计师备考第59天——SOA原则&设计模式
设计模式·系统架构·版本管理·标准化·松耦合·可复用·服务粒度
Yeniden1 天前
【设计模式】桥接模式大白话讲解
设计模式·桥接模式
崎岖Qiu1 天前
【设计模式笔记10】:简单工厂模式示例
java·笔记·设计模式·简单工厂模式
数据知道1 天前
Go语言设计模式:工厂模式详解
开发语言·设计模式·golang·go语言·工厂模式
懒羊羊不懒@1 天前
JavaSe—泛型
java·开发语言·人工智能·windows·设计模式·1024程序员节
rookie_fly2 天前
基于Vue的数字输入框指令
前端·vue.js·设计模式