设计模式
文章平均质量分 50
亲亲亲西
这个作者很懒,什么都没留下…
展开
-
设计模式---原型模式
1.定义原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 简单来说,原型模式就是将需要耗费较多资源的对象(原型对象)存储在缓存中,当用户需要使用到这些原型对象的时候,程序就从缓存中获取到它并进行克隆得到一个与原型对象一样的新对象,再将其克隆的新对象返回给用户。原型模式的好处在于提高了性能,采用以空间换取时间的思想。 2.案例/** * 形状抽象...原创 2018-11-06 10:37:51 · 140 阅读 · 0 评论 -
设计模式---备忘录模式
定义备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 备忘录模式通常有一下几种角色:● Originator发起人角色记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。● Memento备忘录角色负责存储Originator发起人对象的内部状态,在需要的时候提供发...原创 2018-11-07 17:35:08 · 126 阅读 · 0 评论 -
设计模式---工厂模式
在设计模式中,工厂模式可以大致分为三类:简单工厂模式、工厂方法模式和抽象工厂模式。 1.简单工厂模式1.1定义简单工厂模式是由一个工厂对象根据收到的消息决定要创建哪一个类的对象实例。 1.2例子/** * 形状接口,定义draw()方法 */public interface Shape { void draw();} /** * 圆形...原创 2018-11-05 11:43:54 · 122 阅读 · 0 评论 -
设计模式---模板模式
定义定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 案例/** * 游戏模板类(抽象父类) */public abstract class Game { //子类可自定义 public abstract void initialize(); public abstract vo...原创 2018-11-05 13:51:15 · 128 阅读 · 0 评论 -
设计模式---建造者模式
定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 在建造者模式中,有如下4个角色:● Product产品类通常是实现了模板方法模式,也就是有模板方法和基本方法,例子中的BenzModel和BMWModel就属于产品类。● Builder抽象建造者规范产品的组建,一般是由子类实现。例子中的CarBuilder就属于抽象建造者。● ConcreteB...原创 2018-11-05 16:36:25 · 149 阅读 · 0 评论 -
设计模式---代理模式
定义为其他对象提供一种代理以控制对这个对象的访问。 代理模式就是用一个代理类将目标类包起来,在调用代理类的方法时会自动去调用目标类的方法,从而达到代理的作用。代理模式是使用率非常高的设计模式,在spring框架中就大量使用到,例如AOP。代理模式可以分为两种,分别为静态代理和动态代理。 静态代理/** * 打游戏接口 */public interface IGame...原创 2018-11-05 18:05:17 · 130 阅读 · 0 评论 -
设计模式---访问者模式
定义访问者模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 访问者模式有以下几种角色:● Visitor——抽象访问者抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。● ConcreteVisitor——具体访问者它影响访问者访问到一个类后该怎么干,要做什...原创 2018-11-08 09:38:14 · 167 阅读 · 0 评论 -
设计模式---解释器模式
定义解释器模式:给定一门语言,定义 它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 解释器模式通常有一下几种角色:● AbstractExpression——抽象解释器具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和NonterminalExpression完成。 也就是下面例子的VarExpression和...原创 2018-11-17 18:35:48 · 149 阅读 · 0 评论 -
设计模式---状态模式
定义状态模式:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象 对应的类发生了改变一样。它有一下几种角色:● State——抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。● ConcreteState——具体状态角色每一个具体状态必须完成两个职...原创 2018-11-17 19:00:13 · 147 阅读 · 0 评论 -
设计模式---享元模式
定义享元模式:主要用于减少创建对象的数量,以减少内存占用和提高性能。 享元模式的目的在于运用共享技术,使得一些细粒度的对象可以共享,我们的设计确实 也应该这样,多使用细粒度的对象,便于重用或重构。 案例/** * 报考人员信息类 */public class SignInfo { private String id; private String ...原创 2018-11-17 20:25:55 · 136 阅读 · 0 评论 -
设计模式---外观模式
定义外观模式:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 简单来说,外观模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。 案例/** * 形状接口 */public interface Shape { void draw();} /** * 圆形类 */...原创 2018-11-07 16:38:45 · 119 阅读 · 0 评论 -
设计模式---观察者模式
定义观察者模式:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式一般具有以下几种角色:● Subject被观察者定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。● Observer观察者观察者接收到消息后,即...原创 2018-11-07 15:49:03 · 124 阅读 · 0 评论 -
设计模式---中介模式
1.定义中介模式:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介模式中一个重要的角色就是中介者,它处于多个对象之间,处理对象之间多对多的关系。中介者就像我们日常生活的房产中介,负责处理房子买家和卖家的联系。 2.案例在下面的案例中,有一下三种角色:● Mediator 抽象中介者角色抽象...原创 2018-11-06 14:19:25 · 133 阅读 · 0 评论 -
设计模式---命令模式
定义命令模式:是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 命令模式通常有以下三种角色构成:● Receive接收者角色该角色就是干活的角色,命令传递到这里是应该被执行的。● Command命令角色需要执行的所有命令都在这里声明。● Invoker...原创 2018-11-06 15:34:03 · 125 阅读 · 0 评论 -
设计模式---责任链模式
定义责任链模式:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 案例/** * 抽象日志记录器 */public abstract cla...原创 2018-11-06 16:46:56 · 151 阅读 · 0 评论 -
设计模式---修饰模式
定义修饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 修饰模式主要创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 案例/** * 形状接口 */public interface Shape { void draw();} /** * 圆形类 */publ...原创 2018-11-06 17:55:57 · 439 阅读 · 0 评论 -
设计模式---单例模式
单例模式定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式写法单例模式分为饿汉模式和懒汉模式 1.饿汉模式(静态常量)/** * 饿汉模式(静态常量),即在类加载的时候就实例化 */public class SingletonPattern { private static SingletonPattern instanc...原创 2018-11-02 17:53:07 · 121 阅读 · 0 评论 -
设计模式---策略模式
定义策略模式:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 策略模式一般有以下三种角色:● 环境(Context)角色:持有一个Strategy的引用,负责执行策略对象中的算法或行为。● 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。● 具体策略(ConcreteStrategy)...原创 2018-11-07 09:58:03 · 120 阅读 · 0 评论 -
设计模式---适配器模式
定义适配器模式:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式一般有以下三种角色:● Target目标角色该角色定义把其他类转换为何种接口,也就是我们的期望接口,例子中的UniversalPort接口就是目标角色。● Adaptee源角色你想把谁转换成目标角色,这个“谁”就是源角色,它是已经存在的、运行...原创 2018-11-07 11:39:55 · 127 阅读 · 0 评论 -
设计模式---迭代器模式
定义迭代器模式:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。 案例/** * 迭代器接口 */public interface Iterator { boolean hasNext(); Object next();} /** * 外部类接口 */public interface Container { I...原创 2018-11-07 12:07:16 · 159 阅读 · 0 评论 -
设计模式---组合模式
定义组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式的引用非常广泛,如树形菜单,文件、文件夹的管理等等 案例/** * 员工类 */public class Employee { private String name; private String dept; priv...原创 2018-11-07 14:30:36 · 126 阅读 · 0 评论 -
设计模式---桥接模式
定义桥接模式:将抽象和 实现解耦,使得两者可以独立地变化。 桥接模式有4种角色:● Abstraction——抽象化角色它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般 是抽象类。如下面例子的Product抽象类。● Implementor——实现化角色它是接口或者抽象类,定义角色必需的行为和属性。 如下面例子的Company抽象类● R...原创 2018-11-17 22:09:18 · 160 阅读 · 0 评论