随笔分类 - 设计模式
摘要:1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 实质: 由一个工厂类根据传入的参数,动态决定应该创
阅读全文
摘要:调停者模式是对象的行为模式。 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用。 从而使它们可以比较松散的耦合。当这些对象中的某些对象之间的相互作用发生改变时, 不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立的变化。 不要滥用模式 要想恰到好处的在
阅读全文
摘要:解释器模式是类的行为模式。 给定一个语言后,解释器模式可以定义出其文法的一种表示, 并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 语言、解释器和浏览器 解释器模式只描述解释器是怎么工作的,并不指名怎样在运行时创建新的解释器。 虽然广义的将,解释器不一定要有一个浏览器,但是使
阅读全文
摘要:访问者模式是对象的行为模式。 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。 一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 访问者模式的结构 访问者模式涉及的角色: 抽象访问者角色(Visitor):声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。
阅读全文
摘要:状态模式(State Pattern),又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。 状态模式的结构 状态模式把所研究对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状
阅读全文
摘要:备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。 备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化存储起来,从而可以在将来合适的时候把
阅读全文
摘要:命令模式(Command)属于对象的行为模式。 命令模式又称为行动模式(Action)或交易模式(Transaction)。 命令模式把一个请求或者操作封装到一个对象中。 命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式是对命令的封装
阅读全文
摘要:责任链模式(Chain of Responsibility)是一种对象的行为模式。 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。 请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响
阅读全文
摘要:迭代函数模式(Iterator)又叫游标模式(Cursor),是对象的行为模式。 迭代函数模式可以顺序的访问一个聚集中的元素而不必暴露聚集的内部表象。 当这里提到聚集时,是泛指包括Java聚集在内的一般性对象集合。 而当提到Java聚集时,则专指实现了 java.util.Collection接口的
阅读全文
摘要:观察者模式是对象的行为模式,又叫做发布-订阅模式(Publicsh/Subscribe)、模型-视图模式(Model/View)、源-监听器模式(Source/Listener)或从属者模式(Dependent)。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个
阅读全文
摘要:模板方法模式是类的行为模式。 准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现, 然后声明一些抽象方法迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法, 从而对剩余的逻辑有不同的实现。这就是模板方法的用意。 模板方法模式的结构 这里涉及两个角色: 抽象模板角色(Abs
阅读全文
摘要:策略模式属于对象的行为模式。 其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。 策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式相当于可插入式的算法。 当准备在一个系统里使用策略模式时,首先必须找到需要包装的算法,看看算法是否可以从环境中分
阅读全文
摘要:一个对象的状态在对象被创建之后就不再变化,就是所谓的不变模式(Immutable Pattern). 不变模式缺少改变自身状态的行为,因此它是关于行为的。 不变模式只涉及到一个类。 一个类的内部状态创建后,在整个生命期间都不会发生变化时,这样的类称为不变类。 不变模式有两种形式: 弱不变模式 强不变
阅读全文
摘要:行为模式(Behavioral Pattern)是对不同的对象之间划分责任和算法的抽象化。 行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。 行为模式分为类的行为模式和对象的行为模式: 类的行为模式: 类的行为模式使用继承关系在几个类之间分配行为。 对象的行为模式:对象的行为模式则使
阅读全文
摘要:桥梁模式的用意是:将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立的变化。 抽象化 存在于多个实体中的共同的概念性联系,就是抽象化。通常情况下,一组对象如果具有相同的概念性联系,那么它们就可以通过一个共同的类来描述。 实现化 抽象化给出的具体实现,就是
阅读全文
摘要:门面模式是对象的结构模式。 外部与一个子系统的通信必须通过一个统一的门面对象进行,这就是门面模式。 什么是门面模式 门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面对象进行。 门面模式提供一个高层次的接口,使得子系统更易于使用。 门面模式的结构 在这个对象图中,出现了两个角色: 门面
阅读全文
摘要:享元模式是对象的结构模式。 享元模式以共享的方式高效的支持大量的细粒度对象。 享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External)。 一个内蕴状态是存储在享元对象内部的,并且是不会随环境改变而有所不同的。因此,一个享元可以具有内蕴状态并可以共享。 一个
阅读全文
摘要:代理模式是对象的结构模式。 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 代理模式的英文叫做Proxy或 Surrogate,中文都可翻译为 代理。 所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。 在一些情况下,一个客户不想或者不能直接引用一个对象,而
阅读全文
摘要:装饰模式(Decorator)又名包装模式(Wrapper)。 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。 装饰模式的结构 模式的类图 角色如下: 抽象构件角色(Component): 给出一个抽象接口,以规
阅读全文
摘要:合成模型模式(Composite)属于队形的结构模式,有时又叫做部分-整体模式(Part-Whole)。 合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。 合成模式可以使客户端将单纯元素与复合元素同等看待。 树 有向树结构的种类: 从上向下 从下向上 双向的 这里仅给出由上向下的示意图
阅读全文