设计模式
文章平均质量分 82
Java语言之设计模式
kayyoo
这个作者很懒,什么都没留下…
展开
-
设计模式脑图总览
设计模式思维导图原创 2021-04-06 20:26:45 · 122 阅读 · 0 评论 -
行为型模式(十一):访问者模式
一、模式的定义与特点访问者(Visitor)模式:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为型模式中最复杂的一种模式。访问者模式是一种对象行为型模式,其优点:1、扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。2、复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度。3、灵活性原创 2020-08-06 18:40:32 · 262 阅读 · 0 评论 -
行为型模式(十):模板方法模式
模板方法(Template Method)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。原创 2020-08-06 17:18:40 · 219 阅读 · 1 评论 -
行为型模式(九):策略模式
一、模式的定义与特点策略(Strategy)模式:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式的主要优点:1、多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。2、策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码。3、策略模式可以提供相同原创 2020-08-06 16:01:45 · 185 阅读 · 0 评论 -
行为型模式(八):状态模式
一、模式的定义与特点状态(State)模式:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式是一种对象行为型模式,其优点:1、状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。2、减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。3、有利于程序的扩展。通过定义新的子类很容易地增加新的状态和转换。缺点:1、状态模式的使用必然会增原创 2020-08-06 14:06:30 · 342 阅读 · 0 评论 -
行为型模式(七):观察者模式
一、模式的定义与特点观察者(Observer)模式:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其优点如下:1、降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。2、目标与观察者之间建立了一套触发机制。缺点:1、目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。2、当观察者对象很多时,通知的发布会花费很多时间,影原创 2020-08-06 11:35:47 · 333 阅读 · 0 评论 -
行为型模式(六):备忘录模式
一、模式的定义与特点备忘录(Memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。备忘录模式是一种对象行为型模式,优点:1、提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。2、实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。3、简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录原创 2020-08-05 21:47:56 · 172 阅读 · 0 评论 -
行为型模式(五):调停者模式
一、模式的定义与特点中介者(Mediator)模式:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。中介者模式是一种对象行为型模式,优点:1、降低了对象之间的耦合性,使得对象易于独立地被复用。2、将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。缺点:当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护。二、模式的结构中介者模式实现的原创 2020-08-05 20:36:00 · 845 阅读 · 0 评论 -
行为型模式(四):迭代器模式
一、模式的定义与特点迭代器(Iterator)模式:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,优点:1、访问一个聚合对象的内容而无须暴露它的内部表示。2、遍历任务交由迭代器完成,这简化了聚合类。3、它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。4、增加新的聚合类和迭代器类都很方便,无须修改原有代码。5、封装性良好,为遍历不同的聚合结构提供一个统一的接口。缺点:增加了类的个数,这在一定程度上增加了系统的原创 2020-08-05 17:36:02 · 202 阅读 · 0 评论 -
行为型模式(三):解释器模式
一、模式的定义与特点解释器(Interpreter)模式:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。这里提到的文法和句子的概念同编译原理中的描述相同,“文法”指语言的语法规则,而“句子”是语言集中的元素。例如,汉语中的句子有很多,“我是中国人”是其中的一个句子,可以用一棵语法树来直观地描述语言中的句子。解释器模式是一种类行为型模式,其优点如下:原创 2020-08-04 19:33:24 · 235 阅读 · 0 评论 -
行为型模式(二):命令模式
一、模式的定义与特点命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。优点:1、降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。2、增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵活。3、可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。4、方便实现Undo原创 2020-08-04 17:38:14 · 173 阅读 · 0 评论 -
行为型模式(一):责任链模式
一、模式的定义与特点责任链(Chain of Responsibility)模式:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。注意:责任链模式也叫职责链模式。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了。责任链模式是一种对象行为型模式,优点:1、降低了对象之间的耦合度。该模式使原创 2020-08-04 12:07:20 · 383 阅读 · 0 评论 -
结构型模式(七):代理模式
一、模式的定义与特点二、模式的结构三、模式的应用场景四、模式的扩展五、模式的实现六、PPT素材原创 2020-08-03 18:13:16 · 411 阅读 · 0 评论 -
结构型模式(六):享元模式
一、模式的定义与特点享元(Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。优点:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。缺点:1、为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。2、读取享元模式的外部状态会使得运行时间稍微变长。二、模式的结构享元模式中存在以下两种状态:1、内部状态,即原创 2020-08-03 18:09:37 · 187 阅读 · 1 评论 -
结构型模式(五):门面模式
一、模式的定义与特点外观(Facade)模式:也叫门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观模式是“迪米特法则”的典型应用,优点是:1、降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。2、对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易。3、降低了大型软件系统中的编原创 2020-07-31 21:20:06 · 228 阅读 · 0 评论 -
结构型模式(四):装饰模式
一、模式的定义与特点装饰(Decorator)模式:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。优点:1、采用装饰模式扩展对象的功能比采用继承方式更加灵活。2、可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。缺点:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。二、模式的结构通常情况下,扩展一个类的功能会使用继承方式来实现。但继承具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。如果使用组合关系创原创 2020-07-31 18:55:00 · 442 阅读 · 0 评论 -
结构型模式(三):组合模式
一、模式的定义与特点组合(Composite)模式:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。优点:1、组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;2、更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开闭原则”;缺点:1、设计较复杂,客户端需要花更多时间理清类之间的层次关系;2、不容易限制容原创 2020-07-30 22:06:20 · 219 阅读 · 0 评论 -
结构型模式(二):桥接模式
一、模式的定义与特点桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合/聚合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。优点:1、由于抽象与实现分离,所以扩展能力强;2、其实现细节对客户透明。缺点:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。...原创 2020-07-29 18:46:55 · 219 阅读 · 0 评论 -
结构型模式(一):适配器模式
一、模式的定义与特点适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式\color{orange}{类结构型模式}类结构型模式和对象结构型模式\color{orange}{对象结构型模式}对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。两者均实现目标角色接口,目标接口和适配者类的代码也可以相同,区别是:类适配器模式:适配器类继原创 2020-07-27 22:21:40 · 809 阅读 · 0 评论 -
创建型模式(五):单例模式
一、模式的定义和特点单例(Singleton)模式:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。它是最简单的设计模式之一。特点:1、单例类只能有一个实例2、单例类必须自己创建自己的唯一实例3、单例类对外提供一个访问该单例的全局访问点缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。单例模式有多种写法,大部分都有以下关键代码(枚举写法除外):1、私有的类类型变量2、私有的构造方法3、公共的获取实例的方法二、模式的结构主要原创 2020-07-24 17:16:22 · 286 阅读 · 0 评论 -
创建型模式(四):原型模式
一、模式的定义与特点原型(Prototype)模式:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。原型模式优缺点见PPT素材部分。二、模式的结构原型模式的克隆分为浅克隆和深克隆,Java中的Object类提供了浅克隆的clone()方法,具体原型类只要实现Cloneable接口就可实现对象的浅克隆,所以用Java实现原型模式很简单。原型模式包含以下主要角色:原创 2020-07-21 23:42:51 · 211 阅读 · 0 评论 -
创建型模式(三):建造者模式
一、模式的定义与特点建造者(Builder)模式:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。建造者模式的优点:1、各个具体的建造者相互独立,有利于系统的扩展。2、客户端不必知道产品内部组成的细节,便于控制细节风险。建造者模式的缺点:1、产品的组成部分必须相同,这限制了其使用范围。2、如果产品的内部变化复杂,该模式会增加很多的建原创 2020-07-08 23:51:52 · 220 阅读 · 0 评论 -
创建型模式(二):抽象工厂模式
前言前面介绍的[工厂方法模式]中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。同种类称为同等级,也就是说[工厂方法模式]只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如农场里既养动物又种植物,电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。本节要介绍的抽象工厂模式将考虑多等级产品的生产,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族,下图1-1所示的是海尔工原创 2020-07-01 00:10:41 · 2759 阅读 · 0 评论 -
创建型模式(一):工厂方法模式(含简单工厂模式)
工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它不属于 GoF 的 23 种经典[设计模式],它的缺点是增加新产品时会违背“开闭原则”。原创 2020-04-03 22:13:10 · 1753 阅读 · 1 评论 -
设计模式与六大原则
设计模式6大原则原创 2019-11-11 20:27:18 · 699 阅读 · 1 评论