一句话:设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。

和算法有什么区别

其实两者都是问题的通用解决方案,区别在于:

算法更像是菜谱: 提供达成目标的明确步骤。 而模式更像是蓝图: 你可以看到最终的结果和模式的功能, 但需要自己确定实现步骤。

2.设计模式分类


了解其分类只要帮助我们整体理解和记忆设计模式,23种,数量可不少,光记名字就不简单。

根据目的来分

  1. 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。

  2. 结构型模式:用于描述如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

  3. 行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。

根据作用范围来分

  1. 类模式:用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来。

  2. 对象模式:用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。

一张表搞定

| 范围/目的 | 创建型模式 | 结构型模式 | 行为型模式 |

| — | — | — | — |

| 类模式 | 工厂方法 | (类)适配器 | 模板方法、解释器 |

| 对象模式 | 单例 原型 抽象工厂 建造者 | 代理 (对象)适配器 桥接 装饰 外观 享元 组合 | 策略 命令 责任链 状态 观察者 中介者 迭代器 访问者 备忘录 |

3.用设计模式的好处


或许你已从事程序开发工作多年, 却完全不知道单例模式是什么。 很多人都是这样。 即便如此, 你可能也在不自知的情况下已经使用过一些设计模式了。 所以为什么不花些时间来更进一步学习它们呢?

  • 设计模式是针对软件设计中常见问题的工具箱, 其中的工具就是各种经过实践验证的解决方案。 即使你从未遇到过这些问题, 了解模式仍然非常有用, 因为它能指导你如何使用面向对象的设计原则来解决各种问题。

  • 设计模式定义了一种让你和团队成员能够更高效沟通的通用语言。 你只需说 “哦, 这里用单例就可以了”, 所有人都会理解这条建议背后的想法。 只要知晓模式及其名称, 你就无需解释什么是单例。

二、一句话解读

====================================================================

到压轴菜了,一张表,每个设计模式一句话,不懂你来公众号找我。

| 设计模式 | 标准定义 | 通俗解读 | 详细讲解 |

| :-- | :-- | :-- | :-- |

| 工厂方法Factory Method | 定义一个用于创建对象的接口,让其子类决定将哪一个类实例化。 | 兵工厂:给你产了把M416,你拿着它吃了鸡;给你女朋友一把AK47,落地成盒。 | 传送门 |

| 建造者Builder | 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 | 生产流水线:以前是手工业,由人工把单个的生产零件一步步组装好,后来有了工业革命,都由生产流水线代替。 | 待完成 |

| 原型Prototype | 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。 | 印刷术:以前只能临贴抄写费时费力,效率极低,有了印刷术,突突的。 | 待完成 |

| 单例singleton | 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 | 确保唯一:你养了6只猫,他们饿了都找你,你是唯一的,不会有第二个。 | 待完成 |

| 适配器Adapter | 将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 | 翻译官:你去美国外,你只会中文,当地人只会英文,导游都会——Adapter | 待完成 |

| 装饰器Decorator | 动态地给一个对象添加一些额外的职责。就扩展功能而言,比生成子类方式更为灵活。 | 衣服:人靠衣装马靠鞍,打扮打扮,弄点装饰,好看多了 | 待完成 |

| 桥接Bridge | 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 | 马有黑白公母之分。说这是马太抽象,说这是黑色的公马又太死板,只有说这是(黑色的或白色的)(公或母)马才显得灵活而飘逸。 | 待完成 |

| 组合Composite | 将对象组合成树形结构以表示“部分-整体”的层次结构。使得客户对单个对象和复合对象的使用具有一致性。 | 大家族:子又生孙,孙又生子,子子孙孙,无穷尽也,将众多纷杂的人口组织成一个按辈分排列的大家族即是此模式的实现。 | 待完成 |

| 外观Facade | 为子系统中的一组接口提供一个一致的界面, 定义一个高层接口,这个接口使得这一子系统更加容易使用。 | 求同存异:高中毕业需读初中和高中,博士也需读初中和高中,因此国家将初中和高中普及成九年制义务教育。 | 待完成 |

| 享元Flyweight | 运用共享技术有效地支持大量细粒度的对象。 | 一劳永逸:认识三千汉字,可以应付日常读书与写字,可见头脑中存在这个汉字库的重要。 | 待完成 |

| 代理Proxy | 为其他对象提供一个代理以控制对这个对象的访问。 | 垂帘听政:犹如清朝康熙年间的四大府臣,很多权利不在皇帝手里,必须通过辅佐大臣去办。 | 待完成 |

| 责任链Chain of Responsibility | 为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。 | 租房:以前为了找房到处打听,现在只需要找房屋中介,你找中介,中介找房东,直到你租到满意的房子。 | 待完成 |

| 命令Command | 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。 | 借刀杀人:以前是想杀谁就杀,自己动手,导致结仇太多,于是假手他人,挑拨他人之间的关系从而达到自己的目的。 | 待完成 |

| 解释器Interpreter | 给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。 | 文言文注释:一段文言文,将它翻译成白话文。 | 待完成 |

| 迭代器Iterator | 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 | 赶尽杀绝:一个一个的搜索,绝不放掉一个。 | 待完成 |

| 中介者Mediator | 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 | 三角债:本来千头万绪的债务关系,忽出来一中介,包揽其一切,于是三角关系变成了独立的三方找第四方中介的关系; | 待完成 |

| 备忘录Memento | 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。 | 记事本:记性不好,把发生的事记下来。 | 待完成 |

| 观察者Observer | 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。 | 看守者:一旦被看守者有什么异常情况,定会及时做出反应。 | 待完成 |

| 状态State | 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。 | 发布博客:一篇博客有草稿,待审核,已发布三种状态,在这三种状态下发布会有不同的行为。 | 待完成 |

| 策略Strategy | 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。 | 久病成良医:人生病可以有各种症状,但经过长期摸索,就可以总结出感冒、肺病、肝炎等几种; | 待完成 |

| 模板方法Template Method | 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 | 理论不一定要实践:教练的学生会游泳就行了,至于教练会不会则无关紧要; | 待完成 |

| 访问者Visitor | 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 | 卖保险:优秀的保险代理人总能为不同类型的团体提供不同的保单。 | 待完成 |

以上就是23种设计模式的通俗解读,更详细的代码业务场景相关,一条会逐渐更新,并在本篇表格更新对应的文章地址,什么意思该懂了吧(快收藏呀)。

着急看的,欢迎到一条的公众号**一条IT**催稿。


我是一条,一个在互联网摸爬滚打的程序员。

道阻且长,行则将至。大家的 【点赞,收藏,关注】 就是一条创作的最大动力,我们下期见!


T`**催稿。


我是一条,一个在互联网摸爬滚打的程序员。

道阻且长,行则将至。大家的 【点赞,收藏,关注】 就是一条创作的最大动力,我们下期见!

[外链图片转存中…(img-vC6xauEn-1635180923498)]

【白话设计模式】23种设计模式一句话通俗讲解相关推荐

  1. 备战面试日记(3.3) - (设计模式.23种设计模式之结构型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.9 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  2. 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  3. 备战面试日记(3.4) - (设计模式.23种设计模式之行为型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.12 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文 ...

  4. 设计模式—23种设计模式

    23种设计模式 单例模式 工厂模式 抽象工厂模式 模板方法模式 建造者模式 代理模式 原型模式 中介者模式 命令模式 责任链模式 装饰模式 策略模式 适配器模式 迭代器模式 组合模式 观察者模式 门面 ...

  5. 设计模式——23种设计模式学习总结

    声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改. 系列文章目录 简单工厂模式 策略模式模式 装饰模式(进行中) 代理模式(进行中) 工厂方法模式 ...

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

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

  7. java设计模式:23种设计模式及其源代码演示实现

    java23种设计模式及其源代码演示实现 博主在CSDN已有三年,之前一直在看贴,受益颇多,不可多得的一个良好的学习平台,这一次,博主给大家分享一份传说中的java设计模式,源代码与其实现全部都有,希 ...

  8. 图解Java设计模式-23种设计模式

    设计模式分为三种类型,共 23 种 1) 创建型模式 :单例模式 .抽象工厂模 式原型式.建 造者模式.工厂模 式. 2) 结构型模式 :适配器模式.桥接装饰模式 .组合模式.外观模式.享元模式.代理 ...

  9. java设计模式 23种设计模式和思想

    设计模式 1.概述 ​ 设计模式不是一种语法上的规定,而是一种思想,是解决特定场景问题所总结出的一系列方法,可以灵活运用在我们实际开发中,提高我们代码的扩展性,可读性,稳健性,和复用性,从而使我们编写 ...

  10. (六)JAVA设计模式23种设计模式之适配器模式实例demo

    适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类,该类负责加入独立的 ...

最新文章

  1. 外媒:Feinstein Institute的研究人员通过脑植入电极唤起触觉
  2. 编写你的第一个 Django 应用,第 5 部分
  3. 细节取胜的javadoc
  4. linux系统md5sum命令用不了,Linux中md5sum命令起什么作用呢?
  5. 根据目标选择减肥方法 少做无用功
  6. python jieba词频统计英文文本_python实战,中文自然语言处理,应用jieba库来统计文本词频...
  7. C++高级编程篇-如何编写高效的C++篇
  8. php哈希取模,PHP取模hash和一致性hash操作Memcached分布式集群
  9. tableau 实战练习数据源分享_数据分析实战训练营学习笔记
  10. 达州铭仁园2021年高考成绩查询,2021年达州铭仁园中学升学率高不高?
  11. Linux聊天服务器
  12. Go 实现自举的具体含义
  13. 英语语法---名词性短语详解
  14. fabric-ca-client 详解动态添加组织
  15. iPhone刘海模组说明
  16. stm32开发板系列型号开发手册与教程视频下载地址
  17. 色彩平衡校正色彩的原理
  18. STM32F103系列引脚定义-功能图
  19. DB2如何修改某个字段由非空转变为可以为空
  20. beforeSend 出现跨域问题,header里直接设置token就没问题----Day1

热门文章

  1. iperf3的交叉编译
  2. head first JavaScript pdf 下载
  3. 第3章 如何赢得客户
  4. 《微观经济学》博弈论入门:囚徒困境、智猪博弈、性别战、斗鸡博弈
  5. 5.2php小说网站源码,【PHP源码】杰奇小说源码V2.20仿《不朽文学网》原创小说网站系统程序(采集+支付+VIP)...
  6. win11精简中文版 兼容ISO
  7. 手机html5测试苹果八,怎么简单质检你的iPhone手机以及真假判断!
  8. codeblock 添加 .lib 文件
  9. 嵌入式C语言static关键字
  10. 非线性鲁棒控制器_Sliding Mode_滑模控制