23种设计模式全解析(GoF 设计模式)

【设计模式】设计原则和常见的23种经典设计模式 阅读详情

GoF(四人帮) 将23种设计模式分为三大类:创建型模式(5种)、结构型模式(7种)、行为型模式(11种)。 每种模式包含:核心意图、适用场景、简单特点,


一、创建型模式(5种)

核心目标:解决对象创建问题,隐藏创建逻辑,统一/灵活生成对象。

1. 单例模式(Singleton)

  • 意图:保证一个类仅有一个实例,并提供全局访问入口。

  • 场景:全局配置类、连接池、日志工具、缓存对象。

  • 特点:私有构造方法、静态实例、线程安全/饿汉/懒汉/枚举等多种实现。

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

  • 意图:定义创建对象的抽象接口,由子类决定实例化哪一个类。

  • 场景:同一产品族、扩展新产品无需修改原有代码。

  • 特点:一个工厂对应一个产品,遵循开闭原则。

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

  • 意图:提供接口,创建一系列相关/相互依赖的对象(产品族)。

  • 场景:多系列产品(如不同品牌的整套家电、跨平台UI组件)。

  • 特点:一个工厂生产一组产品,隔离产品族。

4. 建造者模式(Builder)

  • 意图:分步构建复杂对象,分离构建与表示。

  • 场景:参数多、构造函数臃肿、对象属性可变(如实体类、配置、报文)。

  • 特点:链式调用、分步组装,可生成不同形态对象。

5. 原型模式(Prototype)

  • 意图:通过复制已有对象(克隆) 创建新对象,而非 new。

  • 场景:对象创建成本高(初始化耗时)、大量相似对象。

  • 特点:浅克隆 / 深克隆,基于原型实例复制。


二、结构型模式(7种)

核心目标:解决类/对象组合问题,灵活组装、扩展结构。

1. 适配器模式(Adapter)

  • 意图:将一个类的接口转换成客户端期望的接口,解决接口不兼容。

  • 场景:老系统适配新接口、第三方接口兼容、新旧代码对接。

  • 分类:类适配器(继承)、对象适配器(组合,常用)。

2. 桥接模式(Bridge)

  • 意图:将抽象与实现分离,两者可独立变化。

  • 场景:多层维度扩展(如形状+颜色、消息类型+发送渠道)。

  • 特点:避免类爆炸,多用组合而非继承。

3. 装饰器模式(Decorator)

  • 意图:动态给对象添加额外功能,比继承更灵活。

  • 场景:IO流、权限增强、功能叠加(咖啡加配料、请求加过滤器)。

  • 特点:层层包装,原有类无需修改。

4. 组合模式(Composite)

  • 意图:将对象组织成树形结构,统一对待单个对象和组合对象。

  • 场景:文件目录、组织架构、菜单树、权限树。

  • 特点:叶子节点 + 容器节点,一致调用接口。

5. 外观模式(Facade)

  • 意图:提供一个统一高层接口,隐藏子系统复杂逻辑。

  • 场景:复杂模块入口、三方工具封装、简化调用链路。

  • 特点:门面类统一调用多个子类,降低调用复杂度。

6. 享元模式(Flyweight)

  • 意图:复用细粒度对象,减少内存开销(对象池思想)。

  • 场景:大量重复对象(字符、字体、游戏NPC、连接池)。

  • 特点:区分内部状态(共享) 和外部状态(独有)。

7. 代理模式(Proxy)

  • 意图:为目标对象提供代理,控制对原对象的访问。

  • 场景:远程调用、延迟加载、权限控制、AOP、日志/监控。

  • 分类:静态代理、动态代理(JDK/CGLIB)、虚拟代理、远程代理。


三、行为型模式(11种)

核心目标:解决对象之间通信、职责分配、流程控制问题。

1. 责任链模式(Chain of Responsibility)

  • 意图:多个对象依次处理请求,请求沿着链传递,直到被处理。

  • 场景:审批流程、过滤器、异常捕获、多级校验。

  • 特点:请求发送者与处理者解耦,可动态调整链路。

2. 命令模式(Command)

  • 意图:将请求封装为对象,可排队、撤销、重做、日志。

  • 场景:遥控器操作、菜单命令、任务队列、事务回滚。

  • 特点:请求、执行、触发三方解耦。

3. 解释器模式(Interpreter)

  • 意图:定义语言文法,构建解释器解析表达式。

  • 场景:表达式计算、规则引擎、脚本解析、编译器。

  • 特点:适合简单语法,复杂语法不推荐。

4. 迭代器模式(Iterator)

  • 意图:提供统一方式遍历聚合对象,不暴露内部结构。

  • 场景:各类集合遍历(Java Collection 底层就是迭代器)。

  • 特点:分离集合与遍历逻辑。

5. 中介者模式(Mediator)

  • 意图:用中介对象解耦多个对象的直接交互。

  • 场景:多组件通信、聊天室、分布式消息中转、复杂模块交互。

  • 特点:所有对象只和中介通信,减少网状依赖。

6. 备忘录模式(Memento)

  • 意图:捕获对象内部状态,保存快照、实现回滚。

  • 场景:编辑器撤销/恢复、游戏存档、数据版本回退。

  • 特点:不破坏封装,保存历史状态。

7. 观察者模式(Observer)

  • 意图:一对多依赖,主体变化,所有订阅者自动收到通知。

  • 场景:事件监听、消息推送、发布订阅、GUI事件。

  • 别名:发布-订阅模式。

8. 状态模式(State)

  • 意图:对象行为随状态改变而改变,将状态逻辑拆分到状态类。

  • 场景:订单状态、审批状态、电梯、游戏角色状态。

  • 特点:消除大量 if/else 状态判断。

9. 策略模式(Strategy)

  • 意图:定义一系列算法,相互替换,算法独立变化。

  • 场景:多种计算规则、支付方式、排序算法、营销活动。

  • 特点:替换臃肿分支判断,算法可自由切换。

10. 模板方法模式(Template Method)

  • 意图:定义算法固定骨架,将可变步骤延迟到子类实现。

  • 场景:通用流程框架、生命周期方法、框架基类。

  • 特点:父类定流程,子类实现细节,控制执行顺序。

11. 访问者模式(Visitor)

  • 意图:在不修改类结构的前提下,为类新增操作。

  • 场景:数据结构稳定、需要频繁新增操作(报表、数据统计)。

  • 特点:分离数据结构与数据操作,结构一变则改动巨大。


总结

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

恭喜你,看到了最后,彩蛋送给你,ヾ(^∀^)ノ

创五构七行十一,二三经典记心底

原建工抽单 ,

桥代外享适组装 (桥代理外想试组装)

迭解策观命中状,责备模访 (爹姐侧观命中撞,责备模仿)

GoF 设计模式:23 种设计模式全面解析(超级详细) 简介 本文是 23 种设计模式相关文章的链接汇总,还有一些相关的参考资料。 文章链接 软件设计模式概述 1.创建型模式之单例模式 2.创建型模式之原型模式 3.创建型模式之工厂方法 4.创建型模式之抽象工厂 5.创建型模式之建造者 6.结构型模式之代理模式 7.结构型模式之适配器模式 8.结构型模式之桥接模式 9.结构型模式之装饰模式 10.结构型模式之外观模式 11.结构型模式之享元模式 12.结构型模式之组合模式 13.行为型模式之模板方法 14.行为型模式之策略模式 15.行为型模式之命令模式 16 阅读详情

相关推荐

腾讯股票接口API(1)——根据股票代码获取详情

获取股票简要信息,找来找去也没有找到官方的文档,都是复制粘贴的,这里先简单记录一下。 1.简要信息 以贵州茅台为例: http://qt.gtimg.cn/q=s_sh600519 // sh600519是贵州茅台的股票代码,根据自己的关键字拼接URL 可以直接在Android项目中请求,会得到如下一串字符串: v_s_sh600519="1~贵州茅台~600519~2075.95~42.95~2.11~38930~794942~~26078.04~GP-A"; 这里v_s代表简要信息,sh600519

GeofferySun的专栏 6万+

设计模式之工厂模式

工厂模式 1、简单工厂模式 1.1、定义 简单工厂模式(Simple Factory Pattern)是指有一个工厂对象决定创建出哪一种产品类的实例,不属于23种设计模式。 简单工厂是产品的工厂 1.2、应用场景 简单工厂模式适用于工厂类创建的对象较少的场景,且客户端只需要传入工厂参数,对如何创建对象的逻辑不需要关心。 1.3、缺点 工厂类的职责相对过重,增加新的产品时需要修改工厂类的判断逻辑,违背了开闭原则。 不易于扩展过于复杂的产品结构。 1.4、实例 支付接口规范: public interface

aaa31203的博客 16万+

SageMath下载与安装

SageMath的下载与安装

旺旺的碎冰冰~的博客 7516

Java设计模式:23种设计模式全面解析,墙都不扶就服你

命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。 迭代器模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。 观察者模式:对象间的一对多的依赖关系。 仲裁者模式:用一个中介对象来封装一系列的对象交互。 备忘录模式:在不破坏封装的前提下,保持对象的内部状态。 解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器。 状态模式:允许一个对象在其对象内部状态改变时改变它的行为。 责任链模式:将请求的发送者..

m0_60747327的博客 1万+

如何使用安路TD与Modelsim进行联合仿真?

1)安装安路FPGA开发软件;(本次实验使用版本:TD_5.6.3_Release)2)安装Modelsim仿真软件;(本次实验使用版本:Modelsim SE-64 10.1c)3)FPGA开发板;(本次实验使用型号:EG4X20BG256)4)LED点灯例程;

qq_17313923的博客 3223

MLX90640 热成像 STM32

MLX90640 热成像

zhaocundang's blog 5008

Java 中的 23 种设计模式详解

项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

微笑听雨 7万+

Flotherm XT新手必看:5分钟搞定自然对流热仿真(附案例文件)

本文为Flotherm XT新手提供了自然对流热仿真的快速入门指南,通过详细的步骤解析和实用技巧,帮助用户在5分钟内完成从建模到后处理的全流程。重点介绍了环境设置、几何建模、材料属性、网格划分等关键环节,并附有案例文件供参考学习,助力工程师快速掌握热仿真技术。

weixin_30839881的博客 633

23种设计模式

public static void send(User user, String msg) { /* 转发消息 */ }System.out.println(type + "子弹发射到(" + x + "," + y + ")");public void deliver() { System.out.println("陆运");System.out.println("书的价格:" + book.getPrice());System.out.println("微信支付:" + amount + "元");

qq_59463944的博客 9940

【007】C++编程必知:原码、补码、反码的全面解读

计算机存储的是数据的补码。原码:计算机中对数字的二进制定点表示方法。比如123的原码是0111 1011。无符号数:原码=反码=补码。有符号数:要分正数和负数,正数的最高位为0,负数的最高位为1。其中,正数的原码、反码、补码都是相同的;负数的反码等于原码的符号数(最高位)不变,其他位取反;补码等于反码+1。比如:-123的原码是1111 1011,反码为1000 0100,补码为1000 0101。原码、补码和反码都是用于计算机表示有符号整数的方法。

Lion_Long的博客 2921

汽车行业OTD业务模式入门学习

本文是在学习彭俊松老师的《汽车行业整车订单交付系统》后,对于OTD理解的一些摘录,供诸位参考学习。

qq_40664711的博客 1万+

设计模式精解:GoF 23种设计模式全解析

抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

xyqqwer的博客 1548

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4198

GoF 23种设计模式全解析:从分类到实战避坑

面向对象编程中,设计模式是对反复出现问题的通用解法,其思想早已融入主流框架与日常开发。从创建型、结构型到行为型,模式分别解决对象创建、结构组合与协作通信的难题。掌握单例、工厂、策略等高频模式,能有效降低耦合、提升扩展性。本文结合实例对比易混淆模式,梳理学习路径与实战避坑经验,帮助你构建面向变化的设计思维。

weixin_34416754的博客 340

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

23种设计模式全解析:从GoF分类到实战选型

在软件开发中,如何让代码在需求变化中保持灵活与可维护,是每个工程师长期面对的挑战。面向对象设计通过封装、继承和多态提供了基础,而设计模式则进一步总结了对象之间协作的经典方案,帮助开发者应对创建、结构与行为三个层面的变化。理解模式的价值不仅在于掌握类图,更在于学会识别变化点、选择合理的对象协作方式,从而降低重构成本。无论是单例模式的全局唯一性,还是策略模式对算法族的封装,这些模式都在实际工程中被广泛验证。本文从GoF定义出发,系统讲解23种模式的分类、核心思想与典型应用场景,并给出面向工厂、装饰器、观察者、状

weixin_33178839的博客 232

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

设计模式全解析:23种GoF模式的原理、代码与应用场景

在面向对象编程中,复用与解耦是永恒的核心诉求。当代码中出现大量重复的new操作或新增功能需要修改众多旧类时,设计模式提供了经过验证的经典解决方案。本文系统梳理GoF提出的23种设计模式,从创建型、结构型到行为型,剖析每种模式解决的核心问题、关键角色与代码骨架。设计模式的价值不仅在于代码复用,更在于设计思想的迁移,帮助开发者在面对复杂业务时快速定位问题并选择恰当的技术方案。无论是单例模式优化全局资源访问,还是观察者模式实现事件解耦与异步通知,亦或是策略模式消除冗余的if-else分支,这些模式在Spring框

weixin_30512965的博客 77

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TypeScript设计模式终极指南:23种经典模式完整解析

TypeScript设计模式是每个现代JavaScript开发者必须掌握的核心技能,这个开源项目提供了23种经典设计模式的完整TypeScript实现。无论你是前端开发新手还是经验丰富的全栈工程师,掌握这些设计模式都能显著提升你的代码质量和架构设计能力。TypeScript设计模式项目包含了创建型、结构型和行为型三大类模式,每个模式都有清晰的实现和演示代码,帮助你深入理解如何在TypeScript

gitblog_01197的博客 686

23种GoF设计模式

GoF(Gang of Four)设计模式是由四位计算机科学家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的书籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的设计模式

笔记 1371

设计模式(软件工程必考|Java开发核心)—— 23种GoF模式万字全解析

设计模式(Design Pattern)是软件设计中反复出现问题的成熟、可复用解决方案。反复出现:不是偶发问题,而是被无数开发者遇到过的共性问题成熟:经过大量项目验证,不是拍脑袋想出来的可复用:不是具体代码,而是一种思想模板,可以套用到不同场景它不是具体代码,而是前辈总结的代码架构套路解耦、易扩展、低耦合、易维护定义:创建一组相关或相互依赖的对象(产品族),而不是单一产品。// 抽象工厂:生产一整套UI组件// Windows风格工厂// Mac风格工厂📝工厂方法 vs 抽象工厂 对比。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 332

GOF的C++软件设计模式的分类和模式名称

根据他们解决问题的性质,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。设计模式的使用不仅可以提升代码的可读性和可维护性,还能提高代码的复用性和灵活性。理解这些模式及其应用场景将有助于设计出更高质量的软件系统。创建型模式主要关注如何创建对象,目的是通过使用不同的方式来创建对象,从而增强程序的灵活性和可复用性。结构型模式关注类或对象的组合,旨在通过组合现有类或对象来形成更大的结构。行为型模式主要关注对象之间的交互,提供了对象之间的责任分配和通信方式。

捕鲸叉的专栏 1160

GOF23种设计模式

设计模式

C/C++ 1341

GoF 的 23 种设计模式

设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。 ...

weixin_42073629的博客 362

【23】种设计模式全面解析(超级详细)

设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。 这 23 种设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联.

天道·乾坤 的博客 4630

设计模式精解GoF 23种设计模式解析附C++实现源码:深入解析设计模式精髓

设计模式精解GoF 23种设计模式解析附C++实现源码:深入解析设计模式精髓 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 深入解析GoF 23种设计模式,并提供C++实现源码,助力开发者掌握设计模式精髓。 项目介绍 《设计模式精解-GoF 23 种设计模式解析附 C++实现源码》是一本专注于解析GoF(Gang of Four,四人组)提出的23种经典设计...

gitblog_06796的博客 891

GOF23种设计模式在Java中的应用(part 1)

第二部分:GOF23种设计模式在Java中的应用(part 2) 一、GOF来源及简介 1.1 GOF23种设计模式简介 《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides...

小蜜蜂1010的博客 1275

设计模式精解 - GoF 23种设计模式解析附C++实现源码

设计模式精解 - GoF 23种设计模式解析附C++实现源码 去发现同类优质开源项目:https://gitcode.com/ 在面向对象编程的世界中,设计模式是解决常见问题的经典方案。本资源文件为您提供了GoF(Gang of Four,四位作者)提出的23种设计模式的详细解析及其在C++中的实现源码。通过学习这些模式,您将深入理解面向对象分析和设计(OOA/D)的精髓。 资源简介 本资源包含以...

gitblog_06781的博客 609
上一篇: 23种设计模式之工厂模式
下一篇: 超详细nvidia显卡驱动安装图文教学
王_teacher
博客等级 码龄9年 118粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值