23 种设计模式的分类 - Design Patterns

设计模式 - Design Patterns
https://refactoringguru.cn/design-patterns
https://refactoring.guru/design-patterns

Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code.
设计模式是软件设计中常见问题的典型解决方案,代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。每个模式就像一张蓝图,你可以通过对其进行定制来解决代码中的特定设计问题。

设计模式是针对软件设计中常见问题的工具箱,其中的工具就是各种经过实践验证的解决方案。

1. Classification of patterns - 模式的分类

模式可以根据其意图或目的分为三种类别:

  • 创建型模式 (Creational patterns) 提供创建对象的机制,提升已有代码的灵活性和可复用性。5 个。
    Factory method (工厂方法), Abstract factory (抽象工厂), Builder (生成器), Prototype (原型), Singleton (单例)
  • 结构型模式 (Structural patterns) 将对象和类组装成较大的结构,同时保持结构的灵活和高效。7 个。
    Adapter (适配器), Composite (组合), Facade (外观), Proxy (代理), Bridge (桥接), Decorator (装饰), Flyweight (享元)
  • 行为模式 (Behavioral patterns) 负责对象间的高效沟通和职责委派。11 个。
    Chain of responsibility (责任链), Memento (备忘录), Template method (模板方法), Command (命令), Observer (观察者), Visitor (访问者), Iterator (迭代器), State (状态), Mediator (中介者), Strategy (策略), Interpreter (解释器)

2. Creational patterns - 创建型模式

These patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.
创建型模式模式提供创建对象的机制,提升已有代码的灵活性和可复用性。

2.1 Factory Method - 工厂方法


在父类中提供一个创建对象的接口以允许子类决定实例化对象的类型。

2.2 Abstract Factory - 抽象工厂


创建一系列相关的对象,而无需指定其具体类。

2.3 Builder - 生成器


分步骤创建复杂对象,该模式允许你使用相同的创建代码生成不同类型和形式的对象。

2.4 Prototype - 原型


复制已有对象,而又无需使代码依赖它们所属的类。

2.5 Singleton - 单例

singleton ['sɪŋɡ(ə)ltən]:n. (某一花色的) 单张,单元素集合


保证一个类只有一个实例,并提供一个访问该实例的全局节点。

3. Structural patterns - 结构型模式

These patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.
结构型模式模式将对象和类组装成较大的结构,同时保持结构的灵活和高效。

3.1 Adapter - 适配器


让接口不兼容的对象能够相互合作。

3.2 Composite - 组合


使用它将对象组合成树状结构,并且能像使用独立对象一样使用它们。

3.3 Facade - 外观

facade [fəˈsɑːd]:n. 外表,(建筑物的) 正面


能为程序库、框架或其他复杂类提供一个简单的接口。

3.4 Proxy - 代理

proxy [ˈprɒksi]:n. 代理人,代表,代理权,代表权


提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在将请求提交给对象前后进行一些处理。

3.5 Bridge - 桥接


将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。

3.6 Decorator - 装饰

decorator [ˈdekəˌreɪtə(r)]:adj. 适于室内装饰的 n. (房屋的) 油漆匠


允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。

3.7 Flyweight - 享元

flyweight ['flaɪ.weɪt]:n. 蝇量级拳击手 (体重 48 至 51 公斤之间)


摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。

4. Behavioral patterns - 行为模式

These patterns are concerned with algorithms and the assignment of responsibilities between objects.
行为模式负责对象间的高效沟通和职责委派。

4.1 Chain of Responsibility - 责任链


允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。

4.2 Memento - 备忘录

memento [məˈmentəʊ]:n. 纪念品


允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。

4.3 Template Method - 模板方法


在超类中定义一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。

4.4 Command - 命令


它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换让你能根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。

4.5 Observer - 观察者


允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。

4.6 Visitor - 访问者


将算法与其所作用的对象隔离开来。

4.7 Iterator - 迭代器


不暴露集合底层表现形式 (列表、栈和树等) 的情况下遍历集合中所有的元素。

4.8 State - 状态


在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。

4.9 Mediator - 中介者

mediator ['mi:dieɪtə(r)]:n. 调停者,斡旋者,解决纷争的人 (或机构)


减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。

4.10 Strategy - 策略


定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。

4.11 Interpreter - 解释器

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

References

https://sourcemaking.com/design_patterns
https://refactoringguru.cn/design-patterns
https://refactoring.guru/design-patterns
设计模式:可复用面向对象软件的基础

23 种设计模式的分类 - Design Patterns相关推荐

  1. java GoF 的 23 种设计模式的分类和功能

    摘抄:http://c.biancheng.net/view/1320.html 1.什么是GoF(摘抄自百度词条) <Design Patterns: Elements of Reusable ...

  2. 23种设计模式的分类和应用场景总结【设计模式】

    23种设计模式的分类和应用场景总结[设计模式] 设计模式分类 创建型模式 结构型模式 行为型模式 设计模式的几种原则 应用场景总结 各种模式的详细介绍 创建型模式 设计模式分类 23种设计模式可以分为 ...

  3. GoF的23种设计模式的分类和功能

    设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用范围来分. 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式.结构性模式和行为模式3种. 创建型模式:用于描述&qu ...

  4. 23种设计模式——软件设计模式概述

    文章目录 23种设计模式--软件设计模式概述 1.软件设计模式的产生背景 2.软件设计模式的概念与意义 2.1. 软件设计模式的概念 2.2. 学习设计模式的意义 3.软件设计模式的基本要素 4.23 ...

  5. 23种设计模式-个人笔记(一)

    目录 一.认识设计模式 1.软件设计模式的概念与意义 1.1.软件设计模式的概念 1.2.学习设计模式的意义 2.设计模式的目的 3.什么是设计模式的原则 4.掌握设计模式的层次 5.软件设计模式的基 ...

  6. 【一文快速理解23种设计模式】

    软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.这就不得不提到面向对象OO. 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP 面向对象的 ...

  7. java 23种设计模式详解

    1. 软件设计模式意义 文章链接:http://c.biancheng.net/design_pattern/     设计模式的本质是对面向对象设计原则运用,是对类的封装.继承和多态以及类的关联关系 ...

  8. 追MM与设计模式(23种设计模式巧妙解析,趣味理解)

    关注"java后端技术全栈" 回复"000"获取优质面试资料 瞎扯一会 大家好,我是老田,今天给大家分享如何通俗易懂的理解设计模式. 设计模式作为我们程序员必备 ...

  9. 23种设计模式(一)

    1. 软件设计模式意义     设计模式的本质是对面向对象设计原则运用,是对类的封装.继承和多态以及类的关联关系和组合关系的充分理解.优点: 可以提高程序员的思维能力.编程能力和设计能力 使程序更加标 ...

  10. 23种设计模式通俗理解

    23种设计模式通俗理解 1.根据目的来分 2.根据作用范围来分 3.GoF的23种设计模式的功能 1.FACTORY 工厂方法 2.BUILDER建造者模式 3.FACTORY METHOD抽象工厂 ...

最新文章

  1. Python-Numpy(3)矩阵基本操作
  2. 分布式锁原理——redis分布式锁,zookeeper分布式锁
  3. iOS微博项目(一)
  4. sklearn自学指南(part11)--Elastic-Net及多任务Elastic-Net
  5. CodeForces369C On Changing Tree
  6. LeetCode之Sum of Left Leaves
  7. 蓝桥杯JAVA省赛2013-----B------2(马虎算式)
  8. 居家洁士扫地机器人_扫地机器人哪个牌子好之科沃斯全屋清洁试用测评
  9. 信息学奥赛一本通(2042:【例5.10】稀疏矩阵)
  10. php操作MySQL数据库的方法和解析
  11. python hello world程序编写_用Python编写一个简单程序
  12. python第四课知识点总结
  13. 从时分复用、频分复用到码分复用(CDMA)
  14. oracle--Tracing PL/SQL subprogram calls with parameters values--Mahmoud Hatem,
  15. 对机器学习实战第二章内容的思考
  16. 飞信2009_我的移动互联网十年经历 (一):飞信时代
  17. 计算机操作技能竞赛系列方案,2019 年上学期计算机文字录入操作技能竞赛
  18. 虚拟内存设置(可扩展板载内存)
  19. win11桌面怎么添加桌面小组件 Windows11添加桌面小组件的步骤方法
  20. CS5216|DP转HDMI方案详解|分辨率1080P

热门文章

  1. 星球大战7:原力觉醒[Star Wars Episode VII:The Force Awakens]
  2. Unity在Hex与Color之间的颜色转换
  3. 2018年DevOps最新现状研究报告解读
  4. java openoffic linux_Linux下安装OpenOffice
  5. 控制天象,世间的最强者!
  6. 网络wifi已连接显示不可上网的解决方法教程
  7. python电影推荐系统_电影推荐系统---协同过滤算法(SVD,NMF)
  8. unity游戏开发之谷歌上架准备
  9. 解决layui的富文本编辑器中图片的大小问题
  10. 值得看三次的高干文_5本精彩的高干文推荐,本本是经典,值得刷三遍以上!...