当前位置: 首页 > news >正文

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 解析。
http://www.dtcms.com/a/557520.html

相关文章:

  • Snapan项目--预览文件梳理
  • Readest0.9.90 | 一款好用的开源阅读器,提供划词翻译、高亮笔记、语音朗读等功能,内置大量朗读引擎和云同步
  • [Dify 实战] Dify 与 LangChain 的区别与组合方式:从工作流到编排框架的深度解析
  • internet网站建设试卷做兼职的网站打字员
  • 济南网站建设多少钱官方传奇手游下载
  • H.264 编码原理与 RTP/RTSP 传输流程详解
  • 包装设计的网站wordpress禁用导航栏代码
  • 非洲秃鹫优化算法(AVOA)的详细原理和数学公式
  • 怎样建立网站卖东西百度打开百度搜索
  • 淮安网站优化营销案例分享
  • 高效简便的网站开发网站服务器迁移
  • html5与android之间相互调用
  • 用一份 YAML 编排实时数据集成Flink CDC 工程实践
  • 全志SPI-NG框架使用说明
  • 域名及网站建设实训wordpress 不能自定义主题
  • 新河网站网站后台默认用户名
  • 第十二章:终极叩问:我是谁,我往何方?(1)
  • JAVA高频面试题
  • 如何制作一个自己的网站?安全教育平台登录入口网址
  • 软考 系统架构设计师系列知识点之杂项集萃(184)
  • Redis性能提升秘籍:大Key与热点Key优化实战
  • 大专物流管理专业职业发展指南
  • 徐州网站制作机构做猎头需要用到的网站
  • 石家庄做网站制作公司做公司点评的网站
  • Git指令集
  • 基于边缘信息提取的遥感图像开放集飞机检测方法
  • 前端基础知识---Promise
  • Java 基础——函数式编程
  • webkitx(Android WebView 最佳实践库)
  • 调查网站做调查不容易过横栏建设网站