首页 > 其他分享 >理论:第七章:用生活的案例解释23种设计模式

理论:第七章:用生活的案例解释23种设计模式

时间:2023-02-22 20:25:05浏览次数:62  
标签:23 MM 创建 GoF 模式 工厂 对象 第七章 设计模式

设计模式
在这里插入图片描述

  1. 根据目的来分

根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种。

创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。
结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。
行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。GoF 中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式。
  • 1
  • 2
  • 3
  1. 根据作用范围来分

根据模式是主要用于类上还是主要用于对象上来分,这种方式可分为类模式和对象模式两种。

类模式:用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。GoF中的工厂方法、(类)适配器、模板方法、解释器属于该模式。
对象模式:用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。GoF 中除了以上 4 种,其他的都是对象模式。
  • 1
  • 2

3.设计模式的功能

1、FACTORY 工厂方法:追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
2、BUILDER建造者模式:MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖) 建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD抽象工厂:请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。 工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE 原型模式:跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要) 原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。
5、SINGLETON 单例模式:俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120591888



标签:23,MM,创建,GoF,模式,工厂,对象,第七章,设计模式
From: https://www.cnblogs.com/wangchuanxinshi/p/17145713.html

相关文章

  • 2023年2月22日学习总结
    今天继续去实现一个简单的增删改查的项目,通过向同学寻求帮助,按照同学的模板根据自己的需求制作了一个简单的学生信息管理系统,实现了对信息的增删改查。接着下载安装并配置......
  • 2023.2.22每日总结
    从昨天学习json添加依赖包的时候就发现的问题——无法解alibaba的依赖包,maven的setting.xml设置里也配置了阿里的镜像仓库,于今天解决 ......
  • 每日总结-23.2.22
    每日总结-23.2.22主要问题1.Gradle构建失败,因为它无法在drawable中找到ic_launcher_foreground.xml.即Gradlebuildisnotsuccessfulbecauseitcannotfind......
  • 230222 Radiated Immunity Pre-compliance Test
    Helloeveryone,welcometoMach1DesignEMCchannel.Lasttimewetalkedabouthowtosetuparadiatedimmunitytestusingaverylowcostantennalikethis.......
  • Java ”框架 = 注解 + 反射 + 设计模式“ 之 注解详解
    Java”框架=注解+反射+设计模式“之注解详解每博一文案刹那间我真想令时光停住,好让我回顾自己,回顾失去的年华,缅怀哪个穿一身短小的连衣裙和瘦窄的短衫的小......
  • 第七章 程序是在何种环境下运行的
        程序中包含着很多内容:运行环境=操作系统+硬件,应用的运行环境通常是用类似于Windows(OS)和AT兼容机(硬件)这样的OS和硬件的种类来表示的。    同一类型的硬件......
  • ABC236 E
    ABC263E题意从一个大小为n的数组选一些数,选的限制是:对于\(1\leqi\leqn-1\),\(a_i\)或者\(a_{i+1}\)被选。问题1:求符合题意要求的选法中最大平均数问题2:求符合题......
  • 4 路 RS485/RS232 输入可接HDMI嵌入式工控机
    嵌入式Linux系统相比普通的操作系统,拥有更加机械化、紧凑、高效的特点,它广泛应用于对空间、性能、功耗要求相对较高的嵌入式设备。嵌入式Linux系统基于业界内的Linux架构,及......
  • 代码随想录算法训练营Day20 二叉树| 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中
    代码随想录算法训练营235.二叉搜索树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。百度百科中......
  • 2023.2.22学习记录
    今天学习了Android开发的文本控件的初步,以及像素的知识文本的字体大小DP,与sp的差别。xml,java,<string>等的了解。1,<resources><stringname="app_name">MyApplicati......