永不磨灭的设计模式(23种设计模式全集)

这篇具有很好参考价值的文章主要介绍了永不磨灭的设计模式(23种设计模式全集)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

七大基本原则

  • 单一职责原则
  • 里氏替换原则
  • 依赖倒置原则
  • 开闭原则
  • 接口隔离原则
  • 迪米特法则
  • 合成复用原则

详细讲解:七大原则

23种设计模式

我们将23种设计模式分为创建型模式、结构型模式和行为模式。

  • 创建型模式:提供创建对象的机制,能够提升已有代码的灵活性和可复用性
  • 结构型模式:介绍如何将对象和类组成比较大的结构,并同时保持结构的灵活和高效
  • 行为模式:负责对象间的搞笑沟通和职责委培
    永不磨灭的设计模式(23种设计模式全集)

创建型模式

1、单例模式

单例模式就是对象永远只会生成同一个对象,不论如何创建都返回同一个对象。是最简单的设计模式。

详细讲解:设计模式 - 单例模式

2、工厂(方法)模式

简单工厂模式:

我们需要了解简单工厂模式。简单工厂模式就好比我们在家吃饭,只需要告诉妈妈想吃什么即可,不需要去向具体的制作过程。

放到我们的代码中就是有一个工厂类,它可以创建一对象,我们只需要告诉它我们想要什么对象即可。

工厂(方法)模式就好比我们去外面吃饭,不同的店提供不同的食品,我们挑选自己想吃的食品进去下单即可。

为什么要使用工厂(方法)模式:

因为如果我们要扩展可以创建不同的对象,那简单工厂就是需要去修改工厂类的源码的,这违反了开闭原则。

所以就将工厂设置为了抽象类,不同的工厂继承抽象工厂类即可生成不同的产品,想要什么样的产品就使用什么工厂类即可。

这样在扩展的时候只需要创建不同的工厂类即可。

详细讲解:设计模式 - 工厂(方法)模式

3、抽象工厂模式

抽象工厂模式可以简单理解为一个大的食堂,这个食堂有各种各样的食品,我们需要要下单即可送到我们身边。

与工厂(方法)模式的区别:

工厂(方法)模式中的工厂还是只能生成同一类的产品,而抽象工厂模式则可以实现不同种类的产品。如果抽象工厂模式也只生成一种品类的产品,那将退化为抽象(工厂)方法

详细讲解:设计模式 - 抽象工厂模式

4、原型模式

原型模式理解为克隆,即创建重复的对象,但又可以保证性能。

实现Cloneable接口并重写clone()方法即可实现克隆

关于浅克隆和深克隆

详细讲解:设计模式 - 原型模式

5、建造者模式

对于复杂对象,我们是不可能一下将这个对象创建出来的,我们需要将这个对象进行拆解,然后按步骤来创建这个复杂的对象,实现了创建复杂对象的灵活性和可读性。

例如生产汽车,不可能是一下就将汽车创建出来new Car("发动机","轮胎","..."),而是将不同的零件按步骤添加到车辆中car.set("发动机") ......

详细讲解:设计模式 - 建造者模式

结构型模式

6、适配器模式

适配器模式可以简单理解为手机充电器,手机充电是不能直接使用220V交流电的,所以需要使用充电器来将电压转为5V才能充电。

根据单一职责原则,一个类只负责一种功能,所以交流电和手机使用的电压对应两个不同的类,这样就可以增加一个适配器类来将两个类进行适配,这就是适配器模式。

详细讲解:设计模式 - 适配器模式

7、桥接模式

桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

将抽象部分与实现部分分离,使它们都可以独立的变化。

详细讲解:设计模式 - 桥接模式

8、组合模式

组合模式可以理解为一个树形结构中的各个元素都是结构相同的对象,我们来将这些元素抽象为一个抽象类,自己组和自己。

这样就不需要每一个层次都创建自己的结构,使用同一个结构即可。

详细解析:设计模式 - 组合模式

9、装饰器模式

装饰器模式就是允许一个现有的对象添加功能,同时又不改变其结构。

我们可以想想去咖啡店点咖啡的时候,点了咖啡还可以加许多配料,设计这样的结构并且使代码符合开闭原则。

详细讲解:设计模式 - 装饰器模式

10、外观模式

外观模式隐藏了系统的复杂性,并向客户端提供一个可以访问的接口。

例如我们在家里看电影,我们要做很多准备,但是如果我们有智能家庭影院的话我们只需要点几个按钮就可以了。智能家庭影院屏蔽了一些繁琐的细节,提供给我们简单明了的步骤。

详细讲解:设计模式 - 外观模式

11、享元模式

享元模式即共享元素,如果一个需求基本都是相同的,那就将这个系统可变的需求独立出来,后面使用时只需要改变不同的位置即可,共同的地方是公用的。

享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。

详细讲解:设计模式 - 享元模式

12、代理模式

代理模式主要有三种实现:静态代理、动态代理合Cglib代理。

详细讲解:设计模式 - 代理模式

行为模式

13、责任链模式

为请求创建一个链式结构,链中的每一个节点依次对请求进行处理。知道满足结束条件即可。

详细讲解:设计模式-责任链模式

14、命令模式

命令模式就是将我们需要执行的动作制作为命令,发送者只需要发送命令,具体命令怎么执行和谁来执行都不需要关注。

例如古代将军发号施令,它是不需要关注具体的执行过程的。

详细讲解:设计模式 - 命令模式

15、迭代器模式

迭代器模式就是将容器遍历的行为和容器分离开来,例如树的结构有好几种遍历方式,我们容器只关注树的存储结构,迭代器只关注容器的遍历方法,这样组和起来即可满足开闭原则。

详细讲解:设计模式 - 迭代器模式

16、中介者模式

中介者模式是用来降低多个对象和类之间的通信复杂性。将复杂的逻辑都维护到一个中介类中,其他类之间可以实现松耦合,使代码易于维护。

详细讲解:设计模式 - 中介者模式

17、备忘录模式

备忘录模式就是保存某一时刻某个对象的重要属性,以便在适当的时候恢复。

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

详细讲解:设计模式 - 备忘录模式

18、观察者模式

观察者模式就是被观察者实现一个存放观察者的集合,当发送变化时及时将信息同步到观察者。

详细讲解:设计模式 - 观察者模式

19、状态模式

学漏一个,后续补充

20、策略模式

一个类的行为或其算法可以在运行时更改,类中组和一个策略接口,随策略的改变,类产生的结果不同。

详细讲解:设计模式 - 策略模式

21、模板方法模式

在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

详细讲解:设计模式 - 模板方法模式

22、访问者模式

访问者模式就是将数据结构和数据操作分离,可以动态的变化数据操作。这个模式解决了稳定的数据结构和易变的操作耦合问题。

详细讲解:设计模式 - 访问者模式

23、解释器模式

解释器模式就是给我们一个特定的规则,我们来创建解释器,后续依据这解释器就可以得到结果。

解释器模式就是一个框架,按这个框架我们就能开发自己的解释器。

详细讲解:设计模式 - 解释器模式

总结

本篇为设计模式的汇总,详细的讲解可以点击对应的连接来学习。

后续我将会继续完善这些文章,将自己在工作中的体会输出到专栏中

你可以先点赞收藏起来,这样就不怕找不到这篇文章啦。

源码

GitHub源码地址:design-patterns

目前仓库中拥有23种设计模式的代码示例,后续将会增加更多实际问题中关于设计模式的代码Demo文章来源地址https://www.toymoban.com/news/detail-472640.html

到了这里,关于永不磨灭的设计模式(23种设计模式全集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【23种设计模式】享元模式【⭐】

    个人主页 :金鳞踏雨 个人简介 :大家好,我是 金鳞 ,一个初出茅庐的Java小白 目前状况 :22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客 :这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进

    2024年02月09日
    浏览(46)
  • 设计模式(23)解释器模式

    一、介绍: 1、定义:解释器(Interpreter)模式是一种对象的行为模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 2、组成结构: (1)AbstractExpression(抽象表达式):约定解释器的解释操作,主要是一个interpret()方

    2024年02月06日
    浏览(53)
  • 【23种设计模式】原型模式(五)

    在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这就会增加创建类的复杂度和创建过程与客户代码复杂的耦合度。如果采用工厂模式来创建这样的实例对象的话,随着产品类的不

    2024年02月10日
    浏览(30)
  • 【23种设计模式】组合模式(八)

    组合模式 ,英文名称是: Composite Pattern 。当我们谈到这个模式的时候,有一个物件和这个模式很像,也符合这个模式要表达的意思,那就是“俄罗斯套娃”。“俄罗斯套娃”就是大的瓷器娃娃里面装着一个小的瓷器娃娃,小的瓷器娃娃里面再装着更小的瓷器娃娃,直到最后

    2024年02月09日
    浏览(41)
  • 【23种设计模式】外观模式(十)

    外观模式 ,英文名称是: Facade Pattern 。我们先从名字上来理解一下“外观模式”。我看到了“外观”这个词语,就想到了“外表”这个词语,两者有着很相近的意思。就拿谈恋爱来说,“外表”很重要,如果第一眼看着很舒服、有眼缘,那就有交往下去的可能。如果长的“

    2024年02月08日
    浏览(43)
  • 23种设计模式之:命令模式

    命令模式是一种行为设计模式,它将一个请求封装成一个对象,从而让你使用不同的请求、队列或者请求的日志来参数化其他对象。它也支持可撤销的操作。命令模式的关键是引入了抽象层——命令接口,具体命令实现该接口,执行操作的对象从执行具体操作的职责中解耦出

    2024年02月21日
    浏览(39)
  • 【23种设计模式】桥接模式(七)

    【 桥接模式 】是【 结构型 】设计模式的第二个模式,也有叫【桥模式】的,英文名称: Bridge Pattern 。 大家第一次看到这个名称会想到什么呢?我第一次看到这个模式根据名称猜肯定是连接什么东西的。因为桥在我们现实生活中经常是连接着A地和B地,再往后来发展,桥引

    2024年02月10日
    浏览(39)
  • 【23种设计模式】组合模式(七)

    组合模式 ,英文名称是: Composite Pattern 。当我们谈到这个模式的时候,有一个物件和这个模式很像,也符合这个模式要表达的意思,那就是“俄罗斯套娃”。“俄罗斯套娃”就是大的瓷器娃娃里面装着一个小的瓷器娃娃,小的瓷器娃娃里面再装着更小的瓷器娃娃,直到最后

    2024年02月09日
    浏览(40)
  • 【23种设计模式】装饰模式(九)

    装饰模式 ,英文名称: Decorator Pattern 。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”。在房子装修的过程中,各种功能可以相互组合,来增加房子的功用。类似的,如果我们在软件系

    2024年02月09日
    浏览(36)
  • 【23种设计模式】装饰器模式

    个人主页 :金鳞踏雨 个人简介 :大家好,我是 金鳞 ,一个初出茅庐的Java小白 目前状况 :22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客 :这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包