设计模式
cwl_java
这个作者很懒,什么都没留下…
展开
-
设计模式-代理模式
代理模式可以分成静态代理和动态代理两种模式,它跟装饰模式也有着非常相像的功能,都是为了对某一个对象拓展它的功能,本文章写的代理模式更加偏向于静态代理的模式,是对一个真实功能的拓展 1.主体抽象类 public abstract class Subject { /** * 主体类 */ public abstract v...原创 2019-07-08 09:10:52 · 333 阅读 · 0 评论 -
设计模式-命令模式
命令模式 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 1.优点 降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。 增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,它满足“开闭原则”,对扩展比较灵活。 可以实...原创 2019-09-10 16:17:02 · 303 阅读 · 0 评论 -
设计模式-解释器模式
解释器模式 解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。 1.优点 扩展性好。由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。 容易实现。在语法树中的每个表达式节...原创 2019-09-10 16:16:16 · 380 阅读 · 0 评论 -
设计模式-责任链模式
责任链模式 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起, 将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这 条链传递,直到有对象处理它为止。 1.优点 降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确...原创 2019-09-10 16:24:25 · 320 阅读 · 0 评论 -
设计模式- 状态模式
状态模式 状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。 1.优点 状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。 减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。 有利于程序的扩展。通过定义新...原创 2019-09-11 14:24:32 · 240 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 1.优点 降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。 目标与观察者之间建立了一套触发机制。 2.缺点 目标与观察者之间的依赖关系并没有完全解除,而且...原创 2019-09-11 14:25:23 · 333 阅读 · 0 评论 -
设计模式-中介者
中介者 中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。 1.优点 降低了对象之间的耦合性,使得对象易于独立地被复用。 将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。 2.缺点 当同事类太多时,中介者的职责将很大...原创 2019-09-11 14:27:24 · 295 阅读 · 0 评论 -
设计模式-迭代器模式
迭代器模式 迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式,其主要优点如下。 1.优点 访问一个聚合对象的内容而无须暴露它的内部表示。 遍历任务交由迭代器完成,这简化了聚合类。 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。 增加新的聚合类和迭代器类都很方便,无须修改原有...原创 2019-09-11 14:29:44 · 325 阅读 · 0 评论 -
设计模式-访问者模式
访问者模式 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。 1.优点 扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。 复用性好。可以通过访问...原创 2019-09-11 14:30:34 · 327 阅读 · 0 评论 -
设计模式-模板模式
模板模式 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 1.优点 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。 它在父类中提取了公共的部分代码,便于代码复用...原创 2019-09-10 16:17:40 · 301 阅读 · 0 评论 -
设计模式-组合模式
组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。 1.优点 组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码; 更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开...原创 2019-09-10 16:18:04 · 1069 阅读 · 0 评论 -
设计模式-享元模式
享元(Flyweight)模式的定义:运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的又橡来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。 1.优点 相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。 2.缺点 为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。 读取享元模...原创 2019-09-10 16:18:14 · 812 阅读 · 0 评论 -
设计模式-构建者模式
构建者模式,又称建造者模式,将一部负责对象的构建分为许多小对象的构建,最后在整合构建的模式。 构建者模式一般用在构建流程或者组成部件固定的场合,将这些部件分开构建成为组件对象,再将这些组件对象整合成为目标对象。 最佳实例就是组装台式电脑的情况,我们可以分别购买主板、CPU、内存、硬盘等部件,然后将这些部件组装在一起就形成了一台完整的电脑。 1.代码示例 1.1 建造者接口 public...原创 2019-07-08 09:11:37 · 241 阅读 · 0 评论 -
设计模式-门面模式
例子:现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。 门面模式解决的就是设计一个门面接待员,让用户可以一次性访问自己想要的...原创 2019-07-08 09:12:23 · 265 阅读 · 0 评论 -
设计模式-单例模式
单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。 单例模式又可以分为饿汉式和懒汉式,顾名思义饿汉式就是很饿,所以会先创建出一个对象来,等待消费.懒汉式就是很懒,会等到调用时再创建出一个对象 1.懒汉单...原创 2019-07-08 09:13:04 · 244 阅读 · 0 评论 -
设计模式-原型模式
原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。 原型模式的克隆分为浅克隆和深克隆,Java 中的 Obje...原创 2019-07-08 09:13:44 · 248 阅读 · 0 评论 -
设计模式-装饰模式
装饰模式:简单的来说就是动态的给一个对象增加额外的功能,就单纯的新增功能来说会比单一的给一个子类新增功能来的灵活,是跟代理模式中的静态代理模式和动态代理模式十分相近,但是静态代理会使得代码非常臃肿,维护性比较差,但是动态代理使用代理类,让代理类只是存在于内存当中运行,不需要产生具体的java文件,这样的模式会更加的优秀.接下来是本章的装饰模式 【本文使用lombok依赖,如果不想使用的可以直接...原创 2019-07-08 09:14:17 · 236 阅读 · 0 评论 -
设计模式-策略模式
1.准备工作,创建一个SpringBoot项目,不需要多余依赖 2.用于判定使用哪个策略的类 public class CashContext { private CashSuper cs; /** * 使用构造方法来进行选择具体的收费策略 * * @param cashSuper */ public CashContext(Cas...原创 2019-07-08 09:14:52 · 307 阅读 · 0 评论 -
设计模式-工厂模式
1.目录结构如下 总体的目录结构如下 2.第一步是有一个基础的工厂类,这个工厂类可以定义一些基础的工厂方法,可以用于多实现 public interface BaseFactory { } 2.一个基本操作类实现该接口 public class OperationFactory implements BaseFactory{ /** ...原创 2019-07-08 09:15:34 · 426 阅读 · 0 评论 -
设计模式-抽象工厂
抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构 抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。 1.应用场景 当需要创建的对象是一系列相互关联或相互依赖的产品族时,如电器工厂中的电视机、洗衣机、...原创 2019-09-10 16:19:01 · 1112 阅读 · 1 评论 -
设计模式-适配器模式
适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 1.优点 客户端通过适配器可以透明地调用目标接口。 复用了现存的类,程序员不需要修改原有代码而重用现有的适...原创 2019-09-10 16:18:44 · 1215 阅读 · 1 评论 -
设计模式-桥接模式
桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 1.优点 由于抽象与实现分离,所以扩展能力强; 其实现细节对客户透明。 2.代码示例 2.1 实现化角色 public interface Implementor { /** * 功能描述: * 〈具体操作的...原创 2019-09-10 16:18:32 · 894 阅读 · 0 评论 -
设计模式-备忘录模式
备忘录模式 备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。 1.优点 提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。 实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。 简化了发起人类。发起人...原创 2019-09-11 14:31:18 · 281 阅读 · 0 评论