设计模式
文章平均质量分 73
对设计模式的温故知新
星是河的眼
这个作者很懒,什么都没留下…
展开
-
GoF总结-24(解释器模式)
1. 概念给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解释器来解释语言中的句子.也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。是一种类行为型模式。2. 优点扩展性好。由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。容易实现。在语法树中的每个表达式节点都是相似的,所以实现其文法较为容易。3. 缺点执行效率较低。解释器模式中通常使用大量的循环和递归调用,当要解释的句子较为复杂时原创 2022-04-07 16:57:59 · 111 阅读 · 0 评论 -
GoF总结-23(备忘录模式)
1. 概念在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式,是一种对象行为型模式。2. 优点提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。出来创建它的发起人之外,其他对象都不能够访问这些状态信息。简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由管理者进行管理,这符合单一职责原则。3. 缺点资原创 2022-04-07 16:13:19 · 110 阅读 · 0 评论 -
GoF总结-22(访问者模式)
1. 概念将作用于某种数据结构的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供访问方式。它将数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。2. 优点扩展性好。能够在不修改对象结构中元素的情况下,为对象结构中的元素添加新的功能。复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用成都。灵活性好。访问者模式将数据结构与作用于数据结构上的操作解耦,使得操作集合可相对自由地演化而不影响系统的原创 2022-04-07 00:10:04 · 107 阅读 · 0 评论 -
GoF总结-21(迭代器模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式。2. 优点访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器完成,这简化了聚合类。它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。增加新的聚合类和迭代器都很方便,无须修改原有代码。封装性良好,为遍历不同的聚合结构提供一个统一接口。3. 缺点增加了类的个数,原创 2022-04-06 23:09:36 · 80 阅读 · 0 评论 -
GoF总结-20(中介者模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念定义一个中介对象来封装一系列对象之间的交互,使原有对象之间耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式是一种对象行为型模式。2. 优点类之间各司其职,符合迪米特法则。降低了对象之间的耦合性,使得对象易于独立地被复用。将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。3. 缺点中介者模式将原本多个对象直接的相互依原创 2022-04-06 16:07:32 · 199 阅读 · 0 评论 -
GoF总结-19(观察者模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。2. 优点降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。目标与观察者之间建立了一套触发机制。3. 缺点目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。当观察者对象很多时,通知的发布会原创 2022-04-06 15:12:40 · 137 阅读 · 0 评论 -
GoF总结-18(状态模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念对有状态的对象,把复杂的"判断逻辑"提取到不同的状态对象中,允许状态对象在其内部发生改变时改变其行为。状态模式是一种对象行为型模式。2. 优点结构清晰,状态模式将于特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足"单一职责原则"。将状态转换显示化,减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。状态类职责明确,有利于程序的扩展。原创 2022-04-06 14:31:23 · 308 阅读 · 0 评论 -
GoF总结-17(责任链模式)
1. 概念为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式也叫职责链模式。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,请求会自动进行传递。所以责任链将请求的发送者和请求的处理者解耦了。责任链是一种对象行为型模式。2. 优点降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也原创 2022-04-05 23:14:00 · 112 阅读 · 0 评论 -
GoF总结-16(命令模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分隔开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。2. 优点通过引入中间件(抽象接口)降低系统的耦合度。扩展性良好,增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,且满足开闭原则。可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。方便实现Undo和Red原创 2022-04-05 17:54:08 · 741 阅读 · 0 评论 -
GoF总结-15(策略模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的用户 。策略模式属于对象行为型模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。2. 优点多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如if…else语句、switch…case语句。策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算原创 2022-04-05 16:14:34 · 128 阅读 · 0 评论 -
GoF总结-14(模板方法模式)
文章目录1. 概念2. 优点3. 缺点4. 结构于实现4.1 结构4.2 实现1. 概念定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式2. 优点它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。它在父类中提取了公共的部分代码,便于代码复用。部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。3.原创 2022-04-05 15:10:00 · 216 阅读 · 0 评论 -
GoF总结-13(组合模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.1.1 透明方式4.1.2 安全方式4.2 实现4.2.1 透明方式4.2.2 安全方式1. 概念有时又叫做整体-部分模式,它是一种将对象组合成树状的层次结构模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含树枝节点和叶子节点,树形结构图原创 2022-04-05 00:17:09 · 130 阅读 · 0 评论 -
GoF总结-12(享元模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构实现1. 概念运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。2. 优点相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。3. 缺点为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。读取享元模式的外部状态会使得运行时间稍微边长。4. 结构与实现享元模式的定义原创 2022-04-04 21:42:59 · 360 阅读 · 0 评论 -
GoF总结-11(外观模式)
文章目录1. 概念2. 优点3. 缺点4. 结构和实现4.1 结构4.2 实现1. 概念外观模式又叫做门面模式,是一种通过为多个复杂度的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。2. 优点外观模式是迪米特法则的典型应用,主要优点如下:降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。对客户屏蔽了子系统组件,减少了客户处理的对象数目原创 2022-04-04 20:15:00 · 272 阅读 · 0 评论 -
GoF总结-10(装饰器模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。2. 优点装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用。通过使用不同装饰类及这些装饰类的排列组合,可以实现不同效果装饰器模式完全遵守开闭原则3. 缺点装饰器模式会增加许多子类,过度使用会增加程序的复杂性。4. 结构与实现通常情况下,扩展一个原创 2022-04-04 18:36:51 · 558 阅读 · 0 评论 -
GoF总结-9(桥接模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现1. 概念将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这连个可变维度的耦合度。桥接模式遵循了里氏替换原则和依赖倒置原则,最终实现了开闭原则,对修改关闭,对扩展开放。2. 优点抽象与实现分离,扩展能力强符合开闭原则符合合成复用原则其实现细节对客户透明3. 缺点由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这原创 2022-04-04 15:27:07 · 511 阅读 · 0 评论 -
GoF总结-8(适配器模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现4.2.1 类适配器模式4.2.2 对象适配器模式1. 概念将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构性模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有的组件库中的相关组建的内部结构,所以应用相对较少些。2. 优点客户端通过适配器可以透明地调用目标接口。复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。原创 2022-04-04 00:28:47 · 205 阅读 · 0 评论 -
GoF总结-7(代理模式)
文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现5. ps5.1 静态代理和动态代理5.2 动态代理5.2.1 JDK动态代理5.2.2 CGLIB动态代理1. 概念由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。2. 优点代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用代理对象可以扩展目标对象的功能代理模式能将原创 2022-04-02 21:36:20 · 538 阅读 · 0 评论 -
GoF总结-6(建造者模式)
文章目录1. 概述2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现4.3 ps1. 概述指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。2. 优点封装性好,构建和表示分离扩展性好,各个具体的建造者相互独立,有利于系统的解耦客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不原创 2022-03-30 21:33:41 · 276 阅读 · 0 评论 -
GoF总结-5(抽象工厂模式)
文章目录1. 概述2. 特点3. 优点4. 缺点5. 结构与实现5.1 结构5.2 实现5.3 ps1. 概述是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。ps:将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族2. 特点抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个产品,而抽象工厂模式可以生产多个产品。使用抽象工厂模式一般要满足以下条件:系统中有多个产品族,每个具体工厂创建同一族但属于原创 2022-03-30 20:39:21 · 92 阅读 · 0 评论 -
Gof总结-4(工厂方法模式)
文章目录1. 概述2. 优点3. 缺点4. 应用场景5. 结构与实现5.1 结构5.2 实现1. 概述工厂模式定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。按实际业务场景划分,工厂模式有3种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫做“简单工厂模式”,简单理解就是一个工原创 2022-03-30 17:35:14 · 88 阅读 · 0 评论 -
GoF总结-3(原型模式)
文章目录1. 概述2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现4.3 ps1. 概述用一个已经创建的实例作为原型,通过复制改原型对象来创建一个和原型相同或相似的新对象.在这里,原型实例指定了要创建的对象的种类.用这种方式创建对象非常高效,根本无须知道对象创建的细节.2. 优点Java自带的原型模式基于内存二进制流的复制,在性能上比直接new一个对象更加优良.可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用原创 2022-03-29 20:27:10 · 94 阅读 · 0 评论 -
GoF总结-2(单例模式)
文章目录1. 概述2. 特点3. 优缺点3.1 优点3.2 缺点4. 在Java中的应用场景5.结构与实现5.1 结构1. 概述指一个类只有一个实例,且该类能自行创建这个实例的一种模式。2. 特点单例类只有一个实例对象该单例对象必须由单例类自行创建单例类对外提供一个访问该单例的全局访问点3. 优缺点3.1 优点单例模式可以保证内存里只有一个实例,减少了内存的开销。可以避免对资源的多重占用。单例模式设置全局访问点,可以优化和共享资源的访问。3.2 缺点单例模式一般没有接口,原创 2022-03-28 20:28:31 · 462 阅读 · 0 评论 -
GoF总结-1
文章目录1. 分类1.1 根据目的分类1.1.1 创建型模式1.1.2 结构型模式1.1.3 行为型模式2.2 根据作用范围来分2.2.1 类模式2.2.2 对象模式1. 分类设计模式有两种分类方法:1.根据模式的目的来分2.根据模式的作用范围来分。1.1 根据目的分类根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式三大类别1.1.1 创建型模式用于描述“怎样创造对象”,它的主要特点是“将对象的创建与实现分离”。GoF中提供了单例、原型、工厂方法、抽象工厂、建造原创 2022-03-27 17:31:14 · 494 阅读 · 0 评论