设计模式
wuychn
这个作者很懒,什么都没留下…
展开
-
过滤器模式(Filter)
一、定义过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。二、案例创建一个类,在该类上应用标准:package com.wuychn.filter;public clas...原创 2020-01-22 13:42:24 · 293 阅读 · 0 评论 -
备忘录模式(Memento)
一、定义备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。备忘录模式的角色:原发器(Originator):负责创建一个备忘录,用以记录当前对象的内部状态。备忘录(Memento):用于存储Originator的内部状态,并且可以防止Originator以外的对象访问Memento。在备忘录Memento中有两个...原创 2020-01-22 12:51:50 · 106 阅读 · 0 评论 -
迭代器模式(Iterator)
一、定义提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。又称游标(Cursor)模式。迭代器模式角色组成:抽象容器角色(Aggregate):负责提供创建具体迭代器角色的接口,一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器角色(ConcreteAggregate):就是实现抽...原创 2020-01-22 13:31:00 · 159 阅读 · 0 评论 -
状态模式(State)
一、定义允许一个对象在其内部状态改变时改变它的行为。状态模式的角色环境角色(Context):也称上下文,定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态角色(State):定义一个接口,用以封装环境对象的一个特定的状态所对应的行为。具体状态角色(ConcreteState):每一个具体状态类都实现了环境(Conte...原创 2020-01-22 13:19:31 · 256 阅读 · 0 评论 -
解释器模式(Interpreter)
一、定义解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。解释器模式的角色:抽象表达式角色(AbstractExpression):声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是一个interpret()方法,...原创 2020-01-22 12:39:41 · 291 阅读 · 0 评论 -
命令模式(Command)
一、定义命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式的角色:客户端角色(Client):创建一个具体命令(ConcreteCommand)对象并确定其接收者。命令角色(Command):声明一个给所有命令类...原创 2020-01-22 11:27:56 · 277 阅读 · 1 评论 -
责任链模式(Chain of Responsibility)
一、定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。责任链模式的角色:抽象处理者角色(Handler):定义出一个处理请求的接口。如果需要,接口可以定义出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。具体处理者角色(ConcreteHandl...原创 2020-01-21 19:22:02 · 122 阅读 · 0 评论 -
策略模式(Strategy)
一、定义在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。策略模式的角色:抽象策略角色(Strategy):策略类,通常由一个接口或者抽象类实现具体策略角色(ConcreteStrategy):包装了相关的算法和行为环境角色(Context):持有一个策略类的引用,最终给客户端调用二、案例抽象策略角...原创 2020-01-21 19:05:04 · 140 阅读 · 0 评论 -
中介者模式(Mediator)
一、定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。中介者模式中的角色:抽象中介者(Mediator):定义了同事对象到中介者对象之间的接口。具体中介者(ConcreteMediator):定义抽象中介者的方法,它需要知道所有的具体同事类,同时需要从具体的同事类那里接收消息,并且向具体的同事类发送信息...原创 2020-01-21 18:15:46 · 266 阅读 · 0 评论 -
观察者模式(Observer)
一、定义定义对象见的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的角色:抽象主题角色(Subject):把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。具体主题角色(ConcreteSubject):在具体主题内...原创 2020-01-21 17:54:58 · 139 阅读 · 0 评论 -
访问者模式(Vistor)
一、定义在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不...原创 2020-01-21 17:36:13 · 501 阅读 · 0 评论 -
组合模式(Composite)
一、定义组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。组合模式设计的角色:Component:是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component...原创 2020-01-21 17:06:45 · 146 阅读 · 0 评论 -
原型模式(Prototype)
一、定义原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。二、例子原型(实际上是implements了Cloneable接口,进而重写clone()方法):package c...原创 2020-01-21 12:54:01 · 185 阅读 · 0 评论 -
建造者模式(Builder)
一、定义建造者模式(Builder Pattern)将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常包括下几个角色:Builder(抽象建造者):给出一个抽象结论,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的对象部件的创建。ConcreteBuilder(具体建造者):实现Builder接口...原创 2020-01-20 19:45:36 · 157 阅读 · 0 评论 -
适配器模式(Adapter)
一、定义适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。适配器模式有类适配器模式和对象适配器模式两种不同的形式。在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。二、类适配器模式类适配器模式把适配的类的API转换成目标类的API。所涉及的角色:目...原创 2020-01-20 19:03:59 · 1762 阅读 · 1 评论 -
桥接模式(Bridge)
一、背景如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案。第一种设计方案是为每一种形状都提供一套各种颜色的版本:第二种设计方案是根据实际需要对形状和颜色进行组合:对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。方案二即是...原创 2020-01-20 18:01:26 · 273 阅读 · 0 评论 -
装饰模式(Decorator)
一、定义装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装,这种模式创建了一个装饰类,用来包装原有的类。装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式中的角色有:抽象构件角色(Component):给出一...原创 2020-01-21 16:04:21 · 134 阅读 · 0 评论 -
外观模式(Facade)
一、定义外观模式(Facade Pattern)又叫门面模式,它向客户端隐藏了系统的复杂性,并提供一个可以访问系统的接口。外观模式为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式的角色如下:门面角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的...原创 2020-01-20 18:38:32 · 94 阅读 · 0 评论 -
享元模式(Flyweight)
一、定义运用共享技术有效地支持大量细粒度的对象。又名“蝇量模式”。说到享元模式,第一个想到的应该就是池技术了。String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。比如我们每次创建字符串对象时,都需要创建一个新的字符串对象的话,内存开销会很大,所以如果第一次创建了字符串对象"adam",下次再创建相同的字符串"adam"时,只是把它的引用指向...原创 2020-01-21 12:28:21 · 122 阅读 · 0 评论 -
代理模式(Proxy)
详见我的另一篇博客http://blog.sina.com.cn/s/blog_8a3eec6f0102yw4o.html原创 2019-03-15 10:48:01 · 127 阅读 · 0 评论 -
工厂模式(Factory)
简单工厂模式简单工厂模式又称为静态工厂方法模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式就是通过一个"全能类",根据外界传递的信息来决定创建哪个具体类的对象。创建一个抽象类Animal:public abstract class Animal { public abstract void eat();}分别创建一个...原创 2019-03-15 10:08:05 · 143 阅读 · 0 评论 -
单例模式(Singleton)
单例模式保证类在内存中只有一个实例。饿汉式所谓饿汉式,就是在类加载的时候就创建实例:public class Singleton { // 1、构造方法私有化 private Singleton() { } // 2、实例化私有静态对象 private static Singleton instance = new Singleton();...原创 2019-03-15 10:30:34 · 4894 阅读 · 0 评论 -
模板模式(Template)
模板方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类去实现。优点:使用模板方法模式时,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求。缺点:如果算法骨架修改的话,则需要修改抽象类。首先定义一个类,该类的作用是计算一段代码的运行时间:public class GetTime { public long getTime() { ...原创 2019-03-15 10:47:27 · 200 阅读 · 0 评论