![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 84
设计模式
coldstarry
这个作者很懒,什么都没留下…
展开
-
sheng的学习笔记-Reactor 模式
reactor网络模型原创 2023-03-20 22:51:01 · 241 阅读 · 0 评论 -
sheng的学习笔记-设计模式-解释器模式
原理图:一些应用提供了内建( Build-In)的脚本或者宏语言来让用户可以定义他们能够在系统中进行的操作。 Interpreter 模式的目的就是使用一个解释器为用户提供一个一门定义语言的语法表示的解释器,然后通过这个解释器来解释语言中的句子。模式的定义与特点解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释..原创 2021-11-22 22:31:41 · 100 阅读 · 0 评论 -
sheng的学习笔记-设计模式-责任链模式
原理图:在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方法由用户自己实现是否可行呢?答案是同样不可取,因为这种方式会存在两个缺点:暴露了聚合类的内部表示,使其数据不安全; 增加了客户的负担。“迭代器模式”能较好地克服以上缺点,它在客户访.原创 2021-11-11 23:35:06 · 79 阅读 · 0 评论 -
sheng的学习笔记-设计模式-责任链模式
原理图:在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这无疑增加了难度。在计算机软硬件中也有相关例子,如总线网中数据报传送,每台计算机根据目标地址是否同自己的地址相同来决定是否接收;还有异常处理中,处理程序根据异常的类型决定自己是否处理该异常;还有Stru...原创 2021-11-02 22:59:37 · 80 阅读 · 0 评论 -
sheng的学习笔记-设计模式-访问者模式和双重分发
原理图:在现实生活中,有些集合对象存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它的处理方式也不同,划价员根据处方单上面的药品名和数量进行划价,药房工作人员根据处方单的内容进行抓药。这样的例子还有很多,例如,电影或电视剧中的人物角色,不同的观众对他们的评价也不同;还有顾客在商场购物时放在“购物车”中的商品,顾客主要关心所选商品的性.原创 2021-10-31 18:41:05 · 184 阅读 · 0 评论 -
sheng的学习笔记-设计模式-命令模式
原理图:在软件开发系统中,“方法的请求者”与“方法的实现者”之间经常存在紧密的耦合关系,这不利于软件功能的扩展与维护。例如,想对方法进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与实现者解耦?”变得很重要,命令模式就能很好地解决这个问题。在现实生活中,命令模式的例子也很多。比如看电视时,我们只需要轻轻一按遥控器就能完成频道的切换,这就是命令模式,将换台请求和换台处理完全解耦了。电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者)。再比如,我们去餐厅吃.原创 2021-10-27 22:40:08 · 88 阅读 · 0 评论 -
sheng的学习笔记-设计模式-中介者模式
原理图:中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网.原创 2021-10-25 23:00:29 · 272 阅读 · 0 评论 -
sheng的学习笔记-设计模式-备忘录模式
原理图:模式的定义与特点备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。备忘录模式是一种对象行为型模式,其主要优点如下。提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。 实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。 简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所..原创 2021-10-21 23:21:35 · 154 阅读 · 0 评论 -
sheng的学习笔记-设计模式-观察者模式
原理图:观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。 目标与观察者之间建立了一套触发机制。它的主要缺点如下。目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。 当观察者对象很原创 2021-10-20 22:49:06 · 133 阅读 · 0 评论 -
sheng的学习笔记-设计模式-状态模式
原理图:状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。每个人、事物在不同的状态下会有不同表现( 动作),而一个状态又会在不同的表现下转移到下一个不同的状态( State)。最简单的一个生活中的例子就是: 地铁入口处,如果你放入正确的地铁票,门就会打开让你通过。在出口处也是验票,如果正确你就可以 ok,否则就不让你通过(如果你动作野蛮,或许会有报警( Alarm)。有限状态自动机( FSM) 也..原创 2021-10-19 22:29:59 · 106 阅读 · 0 评论 -
sheng的学习笔记-设计模式-策略模式
原理图策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理Strategy 模式和 Template 模式要解决的问题是相同(类似) 的, 都是为了给业务逻辑(算法) 具体实现和抽象接口之间的解耦。 Strategy 模式将逻辑(算法) 封装到一个类(Context)里面, 通.原创 2021-10-16 13:40:32 · 268 阅读 · 0 评论 -
sheng的学习笔记-设计模式-模板模式
流程图模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现) 在不同的对象中有不同的细节实现, 但是逻辑(算法) 的框架(或通用的应用算法)是相同的。 Template 提供了这种情况的一个实现框架。Template 模式是采用继承的方式实现这一点:将逻辑..原创 2021-10-14 22:53:17 · 87 阅读 · 0 评论 -
sheng的学习笔记-设计模式-享元模式
原理图:享元模式(Flyweight)定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率在面向对象系统的设计何实现中,创建对象是最为常见的操作。这里面就有一个问题:如果一个应用程序使用了太多的对象, 就会造成很大的存储开销。 特别是对于大量轻量级(细粒度)的对象,比如在文档编辑器的设计过程中,我们如果为没有字母创建一个对象的话,系统可能会因为大量的对象而造成存储开销的浪费。例如一个字母“.原创 2021-10-11 23:29:45 · 71 阅读 · 0 评论 -
sheng的学习笔记-设计模式-桥接模式
原理图Bridge 模式定义 :将抽象和行为划分开来,各自独立,但能动态的结合。总结面向对象实际上就两句话:一是松耦合( Coupling),二是高内聚( Cohesion)。面向对象系统追求的目标就是尽可能地提高系统模块内部的内聚( Cohesion)、尽可能降低模块间的耦合( Coupling)。然而这也是面向对象设计过程中最为难把握的部分,大家肯定在OO 系统的开发过程中遇到这样的问题:1)客户给了你一个需求,于是使用一个类来实现( A);2)客户需求变化,有两个算法实现功能,.原创 2021-10-08 23:57:41 · 87 阅读 · 0 评论 -
sheng的学习笔记-设计模式-装饰模式
原理图:装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。在 OO 设计和开发过程, 可能会经常遇到以下的情况: 我们需要为一个已经定义好的类添加新的职责(操作), 通常的情况我们会给定义一个新类继承自定义好的类,这样会带来一个问题( 将在本模式的讨论中给出)。通过继承的方式解决这样的情况还带来了系统的复杂性,因为继承的深度会变得很深。而 Decorator 提供了一种给类增加职责的方.原创 2021-10-04 22:10:50 · 314 阅读 · 0 评论 -
sheng的学习笔记-设计模式-组合模式
原理图组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。Composite 比较容易理解,想到 Composite 就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时, Composite 将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行原创 2021-10-02 22:58:20 · 234 阅读 · 0 评论 -
sheng的学习笔记-设计模式-外观/门面模式
原理图:外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。代码:package design.facade;// 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,// 而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,// 外部.原创 2021-10-02 20:12:45 · 93 阅读 · 0 评论 -
sheng的学习笔记-设计模式-代理模式
原理图:代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。至少在以下集中情况下可以用 Proxy 模式解决问题:1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成, GoF 称之为虚代理( Virtual Proxy);2)为网络上的对象创建一个局部的本地代理, 比如要操作一个网络上的一个对象( 网络性能不好的...原创 2021-09-29 22:39:21 · 84 阅读 · 0 评论 -
sheng的学习笔记-设计模式-适配器模式
原理图:定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。适配者接口:想要真正执行的接口,但是调用方的接口与实配者不一致package design.adapter;//适配者接口public class Adaptee { public void specif.原创 2021-09-29 00:12:16 · 170 阅读 · 0 评论 -
sheng的学习笔记-设计模式-原型模式
原理图原型模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.Prototype 模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。一个prototype类package design.prototype;import java.util.ArrayList;public class AbstractSpoon.原创 2021-09-21 17:55:58 · 108 阅读 · 0 评论 -
sheng的学习笔记-设计模式-工厂模式
转发,原文:Java设计模式(工厂模式) - IT_longlong - 博客园简单工厂示意图工厂方法示意图:抽象工厂示意图一.简单工厂模式 简单工厂模式就是把对类的创建初始化全都交给一个工厂来执行,而用户不需要去关心创建的过程是什么样的,只用告诉工厂我想要什么就行了。而这种方法的缺点也很明显,违背了设计模式的开闭原则,因为如果你要增加工厂可以初始化的类的时候,你必须对工厂进行改建代码如下:package design.factory;public ...原创 2021-09-21 15:50:42 · 69 阅读 · 0 评论 -
sheng的学习笔记-设计模式-单例模式
转载文章:Java单例模式的5种实现方法_明朗晨光的专栏-CSDN博客_单例模式java饿汉类加载的时候就创建了实例优点:类加载的时候创建一次实例,避免了多线程同步问题缺点:即使单例没被用到也会创建,浪费内存public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Si转载 2021-09-21 15:31:02 · 60 阅读 · 0 评论 -
sheng的学习笔记-设计模式-建造者模式
设计模式之建造者(Builder)模式示意图:建造者模式是日常开发中比较常见的设计模式,它的主要作用就是将复杂事物创建的过程抽象出来,该抽象的不同实现方式不同,创建出的对象也不同。通俗的讲,创建一个对象一般都会有一个固定的步骤,这个固定的步骤我们把它抽象出来,每个抽象步骤都会有不同的实现方式,不同的实现方式创建出的对象也将不同。举个常见的例子,想必大家都买过电脑,电脑的生产或者组装其实就是属于建造者模式,我们知道,电脑的生产都需要安装CPU、内存条、硬盘等元器件。我们可以把这个安装步骤抽象.原创 2021-09-21 16:00:35 · 117 阅读 · 0 评论