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

设计模式概述

设计模式

  • 1 概念
  • 2 分类
    • 2.1 创建型模式
    • 2.2 结构型模式
    • 2.3 行为型模式

1 概念

设计模式是解决软件设计中常见问题的可复用方案,提供了一套经过验证的代码结构和交互方式。它们不直接转化为代码,而是描述如何组织类和对象以应对特定场景。

2 分类

设计模式通常分为三大类:创建型模式结构型模式行为型模式

创建型结构型行为型
工厂方法模式适配器模式策略模式
抽象工厂模式装饰器模式观察者模式
单例模式代理模式命令模式
建造者模式外观模式模版方法模式
原型模式桥接模式状态模式
组合模式责任链模式
享元模式中介者模式
迭代器模式
访问者模式
备忘录模式
解释器模式

2.1 创建型模式

这类模式关注对象的创建机制,旨在以更灵活的方式创建对象,避免直接使用new关键字。

  • 工厂方法模式Factory Method

    • 提供了一种延迟创建类的方法, 定义一个创建对象的接口,但由子类决定实例化哪个类。
    • 适用于需要生成复杂对象或对象创建过程需要封装的情况。
  • 抽象工厂模式Abstract Factory

    • 提供一个接口用于创建相关或依赖对象的家族,而无需指定具体类。
    • 适用于需要一组协同工作的对象,解决复杂系统中对象创建的问题。
  • 单例模式Singleton

    • 确保一个类只有一个实例,并提供全局访问点。
    • 适用于需要控制资源访问或共享状态的场景。
  • 建造者模式Builder

    • 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
    • 适用于对象构造过程复杂或需要分步构建的场景。
  • 原型模式Prototype

    • 通过复制现有对象来创建新对象,而不是通过new
    • 适用于对象创建成本较高或需要动态配置对象的场景。

2.2 结构型模式

这类模式关注类和对象的组合方式,旨在通过继承或组合实现更灵活的结构。

  • 适配器模式Adapter

    • 将一个类的接口转换成客户端期望的另一个接口。
    • 适用于需要复用现有类但其接口不匹配的情况。
  • 装饰器模式Decorator

    • 动态地给对象添加额外的职责,比继承更灵活。
    • 适用于需要扩展功能但不想修改原有代码的场景。
  • 代理模式Proxy

    • 为其他对象提供一种代理以控制对这个对象的访问。
    • 适用于需要延迟加载、访问控制或日志记录的场景。
  • 外观模式Facade

    • 提供一个统一的接口来访问子系统中的多个接口。
    • 适用于简化复杂系统的调用。
  • 桥接模式Bridge

    • 将抽象部分与实现部分分离,使它们可以独立变化。
    • 适用于需要多维度扩展的场景。
  • 组合模式Composite

    • 将对象组合成树形结构以表示“部分-整体”的层次结构。
    • 适用于需要统一处理单个对象和组合对象的情况。
  • 享元模式Flyweight

    • 通过共享技术高效地支持大量细粒度对象。
    • 适用于需要减少内存开销的场景。

2.3 行为型模式

这类模式关注对象之间的交互和职责分配,旨在实现更灵活的通信方式。

  • 策略模式Strategy

    • 定义一系列算法,封装每个算法并使它们可以互相替换。
    • 适用于需要在运行时动态选择算法的场景。
  • 观察者模式Observer

    • 定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会得到通知。
    • 适用于事件驱动的系统。
  • 命令模式Command

    • 将请求封装为对象,从而支持请求的排队、记录或撤销。
    • 适用于需要解耦发送者和接收者的场景。
  • 模板方法模式Template Method

    • 定义一个操作中的算法骨架,将某些步骤延迟到子类中实现。
    • 适用于需要固定流程但允许部分步骤灵活变化的场景。
  • 状态模式State

    • 允许对象在其内部状态改变时改变它的行为。
    • 适用于对象行为依赖于状态的场景。
  • 责任链模式Chain of Responsibility

    • 将请求的发送者和接收者解耦,使多个对象都有机会处理请求。
    • 适用于需要动态指定处理对象的场景。
  • 中介者模式Mediator

    • 定义一个中介对象来封装一系列对象之间的交互。
    • 适用于需要减少对象间直接耦合的场景。
  • 迭代器模式 (**lterator **)

    • 提供一种方法顺序访问聚合对象中的各个元素,而不暴露其内部表示。
    • 适用于需要统一遍历不同结构的场景。
  • 访问者模式Visitor

    • 将算法与对象结构分离,使得可以在不修改对象结构的情况下添加新的操作。
    • 适用于需要频繁添加新操作的场景。
  • 备忘录模式Memento

    • 在不破坏封装性的前提下捕获并保存对象的内部状态,以便后续恢复。
    • 适用于需要撤销或回滚的场景。
  • 解释器模式Interpreter

    • 定义语言的文法表示,并提供一个解释器来处理这种语言。
    • 适用于需要解析特定语法规则的场景。

文章转载自:

http://2mJ3WZRK.wLdtp.cn
http://qQdu1e2j.wLdtp.cn
http://YHsMQjNx.wLdtp.cn
http://QGB1jBSX.wLdtp.cn
http://f2bEmR9G.wLdtp.cn
http://dkr8jjIW.wLdtp.cn
http://CIwLqRk8.wLdtp.cn
http://EwCBlGU6.wLdtp.cn
http://f5qSyTyL.wLdtp.cn
http://YTmgoJo5.wLdtp.cn
http://HcX52nVu.wLdtp.cn
http://iB3fqRrV.wLdtp.cn
http://iDhS1lWv.wLdtp.cn
http://o7C9YpHz.wLdtp.cn
http://qSTLI3m7.wLdtp.cn
http://FXT4KKU3.wLdtp.cn
http://8wGzcf8v.wLdtp.cn
http://zJBuD8kf.wLdtp.cn
http://f606wWBj.wLdtp.cn
http://lo9xN3hA.wLdtp.cn
http://E4uMcJEd.wLdtp.cn
http://pmzryNMl.wLdtp.cn
http://IDC5UjKb.wLdtp.cn
http://47Xosrs0.wLdtp.cn
http://IdXVbukG.wLdtp.cn
http://NBRilpJb.wLdtp.cn
http://iemFmQQK.wLdtp.cn
http://FYYYlZid.wLdtp.cn
http://VbtDz8v6.wLdtp.cn
http://38GXInFI.wLdtp.cn
http://www.dtcms.com/a/387598.html

相关文章:

  • 基于 TCP 协议的 C++ 计算器项目实现:从网络通信到协议封装
  • 【分布式技术】深入理解AMQP(高级消息队列协议)
  • 海外短剧分销系统开发:技术栈选型与核心模块实现指南
  • 每日前端宝藏库 | Toastify.js ✨
  • Nuxt3:自动导入渲染模式服务器引擎生产部署模块化
  • 打造高效对账单管理组件:Vue3 + Element Plus 实现客户账单与单据选择
  • 第二章 Arm C1-Premium Core技术架构
  • Bartender 6 多功能菜单栏管理(Mac)
  • 嵌入式科普(38)C语言预编译X-Macros深度分析和实际项目代码分享
  • Docker compose 与 docker swarm 的区别
  • 【嵌入式硬件实例】-555定时器实现水位检测
  • AbMole小课堂丨R-spondin-1(RSPO1):高活性Wnt通路激活剂,如何在多种类器官/干细胞培养中发挥重要功能
  • 【C语言代码】打印九九乘法口诀表
  • vue3和element plus, node和express实现大文件上传, 分片上传,断点续传完整开发代码
  • electron-egg使用ThinkPHP项目指南
  • 温州工业自动化科技工厂如何实现1台服务器10个研发设计同时用
  • 如何用PM2托管静态文件
  • Java程序设计:基本数据类型
  • 在k8s环境下部署kanboard项目管理平台
  • 为什么 MySQL utf8 存不下 Emoji?utf8mb4 实战演示
  • 2025 年 PHP 常见面试题整理以及对应答案和代码示例
  • (二十五)、在 k8s 中部署证书,为网站增加https安全认证
  • 风机巡检目前有什么新技术?
  • 震坤行工业超市开放平台接口实战:工业品精准检索与详情解析全方案
  • 河南萌新联赛2025第(八)场:南阳理工学院
  • docker回收和mysql备份导入导致数据丢失恢复---惜分飞
  • 「Memene 摸鱼日报 2025.9.17」上海张江人工智能创新小镇正式启动,华为 DCP 技术获网络顶会奖项
  • 【数据结构】顺序表,ArrayList
  • 第十二章 Arm C1-Premium GIC CPU接口详解
  • 【数据结构---并查集】(并查集的原理,实现与应用)