【白话设计模式】23种设计模式一句话通俗讲解,女朋友都能听懂(导航篇)

前言

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

相信大家在面试的时候经常会听到这些问题:

说说你用过的设计模式有哪些?

Spring里面都用到了哪些设计模式?

这些问题都是面试高频题,但是想回答的漂亮,属实不易。

首先,设计模式有23种之多,光靠背官方给的定义面试官一个问题就能问的哑口无言,

其次,就算是有几年开发经验的老鸟,也不一定真正在开发中用过设计模式,面试官只要一提到业务场景,必懵!

所以,一条决定出一个设计模式的专栏,讲明白的前提下每个设计模式至少配一个业务场景。融会贯通,学以致用。

一、初见设计模式

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

1.什么是设计模式


设计模式最早由提谁提出的呢?

1994 年,埃里希·伽玛、 约翰·弗利赛德斯、 拉尔夫·约翰逊和理查德·赫尔姆这四位作者出版了 《设计模式: 可复用面向对象软件的基础》 一书, 将设计模式的概念应用到程序开发领域中。 该书提供了 23 个模式来解决面向对象程序设计中的各种问题, 很快便成为了畅销书。 由于书名太长, 人们将其简称为 “四人组 (Gang of Four, GoF) 的书”, 并且很快进一步简化为 “GoF 的书”。

什么是设计模式

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

和算法有什么区别

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

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

2.设计模式分类


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

根据目的来分

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

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

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

根据作用范围来分

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

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

一张表搞定

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

| — | — | — | — |

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

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

3.用设计模式的好处


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

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

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

二、一句话解读

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

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

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

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

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

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

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

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

最后

文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值