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

永不磨灭的设计模式

  • 概述
  • 七大基本原则
  • 23种设计模式
      • 1、单例模式
      • 2、工厂(方法)模式
      • 3、抽象工厂模式
      • 4、原型模式
      • 5、建造者模式
      • 6、适配器模式
      • 7、桥接模式
      • 8、组合模式
      • 9、装饰器模式
      • 10、外观模式
      • 11、享元模式
      • 12、代理模式
      • 13、责任链模式
      • 14、命令模式
      • 15、迭代器模式
      • 16、中介者模式
      • 17、备忘录模式
      • 18、观察者模式
      • 19、状态模式
      • 20、策略模式
      • 21、模板方法模式
      • 22、访问者模式
      • 23、解释器模式
  • 总结
  • 源码

概述

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

七大基本原则

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

详细讲解:七大原则

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353262.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

谁说菜鸟不会数据分析python pdf_谁说菜鸟不会数据分析Pdf完整版

展开全部 |下载地址du: ed2k://|zhifile|%5B%E8%B0%81%E8%AF%B4%E8%8F%9C%E9%B8%9F%E4%B8%8D%E4%BC%9A%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%28.%E5%85%A5%E9%97%A8%E7%AF%87%29%5D.%E5%BC%A0%E6%96%87%E9%9C%96.%E5%85%A8%E5%BD%A9%E7%8988.pdf|43230020|90ca9d…

《谁说菜鸟不会数据分析》学习笔记 第三章数据准备 第四章数据处理

这本书是基于Excel讲解的,顺便复习了下Excel的用法,笔记只记录我觉得有用的内容。 第一章 数据分析那些事儿 第二章 确定分析思路 第三章 数据准备 第四章 数据处理 第五章 数据分析 第六章 数据展现 第七章 图表优化 第八章 数据分析报告 第三章 数据…

谁说菜鸟不会数据分析-入门篇

第一章 数据分析那些事儿 1.1 数据分析是“神马” 数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将他们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是 为了提取有用信息和形成结论而对数据…

超级菜鸟怎么学习数据分析?

作者:陈老师,在咨询行业打拼了9年,在如何诊断经营问题、建立分析体系、解决专项问题上有超过30个大型项目积累与实战,天善智能特邀专家。 个人公众号:接地气学堂 博客:https://ask.hellobi.com/blog/chenwe…

Spyder 入门基础学习《谁说菜鸟不会数据分析》-方小敏著 读书笔记

写在前面:本文作者购买了《谁说菜鸟不会数据分析》-方小敏著 这本书,感觉写的非常好,遂作为日常读书笔记进行了记录。推荐使用python进行数据分析的初学者购买此书学习。 (文章中部分内容来自推荐图书《谁说菜鸟不会数据分析》方…

谁说菜鸟不会数据分析python pdf_《谁说菜鸟不会数据分析》系列

2.png 3.png 4.png 5.png 6.png 7.png 1.png 什么是数据分析 用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能 数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概况总结的过程 …

Python实现《谁说菜鸟不会数据分析(入门篇)》的案例

这段时间在学习Excel和Python相关内容,Excel数据分析入门有一本《谁说菜鸟不会数据分析(入门篇)》,内容细致,简洁易懂,注重培养分析的思维而不仅仅是告知方法。在学习Python过程中萌发了通过使用Python的方…

《谁说菜鸟不会数据分析》之数据分析

什么是数据分析? 顾名思义,数据分析就是对数据进行分析。 可是,数据分析的真正定义是什么呢? 数据分析是指利用适当的统计分析方法对收集来的大量数据进行分析,将他们加以汇总消化并理解,以最大化地开发…

Python 中的 SOLID 原则

💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 SOLID 是一组面向对象…

谁说菜鸟不会数据分析(工具篇)

《谁说菜鸟不会数据分析(工具篇)》 基本信息 作者: 张文霖 狄松 林凤琼 出版社:电子工业出版社 ISBN:9787121204098 上架时间:2013-6-14 出版日期:2013 年6月 开本:16开 页码&#x…

谁说菜鸟不会数据分析,不用Python,不用代码,学会这些技能,让你秒变分析大神

作为一个菜鸟,你可能觉得数据分析就是做表格的,或者觉得搞个报表很简单。实际上,当前有规模的公司任何一个岗位如果没有数据分析的思维和能力,都会被淘汰,数据驱动分析是解决日常问题的重点方式。 很多时候&#xff0…

《谁说菜鸟不会数据分析》学习笔记 第一章总览 第二章数据分析思路

网上的信息太琐碎了,根本没搞懂什么是数据分析方法什么是数据分析方法论,所以找了一本比较简单的书来系统学习一下,本来打算粗略看完,但是觉得这本书知识还是不错的,所以决定在未来一周把这本书用心学一下。 这本书是基…

《谁说菜鸟不会数据分析》学习笔记 第八章数据分析报告

第8章 数据分析报告 8.1 什么是数据分析报告 8.1.1 数据分析报告是什么 数据分析报告是用于研究事物的现状、问题原因,并得出结论,提出解决方案的一种应用文体。 是决策者认识事物、了解事物、掌握信息的主要工具之一。 8.1.2 数据分析报告的原则 &…

谁说菜鸟不会数据分析(入门篇)----- 学习笔记4(数据分析方法)

1、数据分析方法 数据分析作用与对应的分析方法 数据分析作用基本方法数据分析方法现状分析对比 对比分析、平均分析、总和评价分析 原因分析细分 分组分析、结构分析、交叉分析、杜邦分析 漏斗图分析、矩阵关联分析、聚类分析 预测分析预测 回归分析、时间序列、决策树、神经网…

《谁说菜鸟不会数据分析》学习笔记 第五章数据分析

第五章 数据分析 5.1 数据分析方法现状分析5.1.1 对比分析法5.1.2 分组分析法5.1.3 结构分析法5.1.4 分布分析法5.1.5 交叉分析法5.1.6 RFM分析法5.1.7 矩阵关联分析法5.1.8 综合评价分析法 原因分析5.1.9 结构分解法5.1.10 因素分解法5.1.11 漏斗图分析法 预测分析5.1.12 趋势…

产品读书《谁说菜鸟不会数据分析(工具篇)》

系列二:谁说菜鸟不会数据分析(工具篇) PPT查看1 、PPT查看2 第一章 : 高效处理数据 查询语法: SELECT 字段1,字段2,字段3 FROM 表 WHERE 条件1 AND 条件2 AND 字段 IN(条件1,条件2,条件3) O…

《谁说菜鸟不会数据分析》之探索性数据分析

探索性数据分析是运用一些分析方法从大量的数据中发现未知且有价值信息的过程。 分类 探索性数据分析可分为以下4种: * RFM分析 * 聚类分析 * 因子分析 * 对应分析 RFM分析 RFM分析是针对销售行为的一种分析方法,在SPSS中有对应的分析模块&#…

产品读书《谁说菜鸟不会数据分析(入门篇)》

PPT查看1 PPT查看2 思维导图下载 ppt下载 什么是数据分析?怎么样才是数据分析的思维?数据分析的流程有哪些?常用的数据方法又有哪些?工具呢?可以学习的网站有哪些?我觉得《谁说菜鸟不会数据分析&#…

谁说菜鸟不会数据分析,不用Python,不用代码也轻松搞定

作为一个菜鸟,你可能觉得数据分析就是做表格的,或者觉得搞个报表很简单。实际上,当前有规模的公司任何一个岗位如果没有数据分析的思维和能力,都会被淘汰,数据驱动分析是解决日常问题的重点方式。 很多时候&#xff0c…

【HTML】第 1 节 - HTML 初体验

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 。 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、HTML 概念 2.1、HTML 定义 2.2、标签语法 3、HTML 基本骨架 4、标签的关系 5、注释 6、总结 1、缘起 最近在学习微信小程…