Design Patterns
文章平均质量分 77
flustar
这个作者很懒,什么都没留下…
展开
-
设计模式学习笔记(十五)—State模式
一、 State模式定义:允许一个对象在其状态改变时,改变它的行为。看起来对象似乎修改了它的类。二、 模式解说State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对原来的代码进行编译。State模式采用了对这些不同的状态进行封装的方式处理原创 2008-02-01 18:16:00 · 1056 阅读 · 0 评论 -
设计模式学习笔记(二十一)—Composite模式
今天开始学习Composite模式,首先让我们看一下它的定义: 将对象组合成树形结构以表示“整体—部分”的层次结构。Composite模式使单个对象和组合对象的使用具有一致性。下面给出这个模式的结构图: 如果把Composite模式看成是树形结构的话,那么它主要角色有:1) 树干角色(Component):该角色是一个抽象类,它定义了一些操作增删树叶(Leaf)的操作。2) 树枝角色(Compo原创 2008-02-01 18:25:00 · 3153 阅读 · 3 评论 -
设计模式学习笔记(二十二)—FlyWeight享元模式
一、FlyWeight模式定义:运用共享技术有效地支持大量细粒度对象。二、模式解说也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存原创 2008-02-01 18:27:00 · 3540 阅读 · 2 评论 -
设计模式学习笔记(三)—Strategy策略模式
GOF《设计模式》一书对Strategy模式是这样描述的: 定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。 Strategy模式以下列几条原则为基础:1) 每个对象都是一个具有职责的个体。2) 这些职责不同的具体实现是通过多态的使用来完成的。3) 概念上相同的算法具有多个不同的实现,需要进行管原创 2008-02-01 17:58:00 · 855 阅读 · 0 评论 -
设计模式学习笔记(四)—Bridge桥接模式
《设计模式》一书对Bridge是这样描述的:将抽象与其实现解耦,使它们都可以独立地变化。大致意思是说:将一组实现与另一组使用他们的对象分离。这里的实现指的是抽象类及其派生类用来实现自己的对象(而不是抽象类的派生类,这些派生类被称为具体类)。下面是《Design Patterns Explained》书中的例子。其结构图如下: 下面是它的实现:abstract class原创 2008-02-01 18:00:00 · 1805 阅读 · 1 评论 -
设计模式学习笔记(八)—Template Method模式
《设计模式》一书对Template Method模式是这样描述的: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。不改变算法的结构而重新定义它的步骤。 我的理解:定义一个抽象类或者说接口,在它的内部定义一些抽象的方法(供TemplateMethod调用的步骤)和一个TemplateMethod方法(非抽象方法),封装了这些抽象方法的接口或抽象类就是骨架。而将它的实现延迟到子类中,也就是用子类原创 2008-02-01 18:07:00 · 710 阅读 · 0 评论 -
设计模式学习笔记(十一)—Prototype原型模式
Prototype模式的意图是: 通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。 在java的类库中已经实现了这一模式,只要你定义的类实现了Cloneable接口,用这个类所创建的对象可以做为原型对象进而克隆出更多的同类型的对象。下面举个例子,来介绍简单的介绍一下它的使用。import java.io.ByteArrayInputStream;i原创 2008-02-01 18:11:00 · 1427 阅读 · 0 评论 -
设计模式学习笔记(十二)—Builder建造者模式
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。刚接触到这个模式的时候,实在搞不明白它的意思,有什么用。于是,上网google了一圈,终于得到这个大家普遍认可的解释:建造模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。下面举一个例子来说明这个模式的使用,代码如下:imp原创 2008-02-01 18:13:00 · 543 阅读 · 0 评论 -
设计模式学习笔记(十三)—Iterator迭代器模式
Iterator模式定义:提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。这个模式在java的类库中已经实现了,在java中所有的集合类都实现了Conllection接口,而Conllection接口又继承了Iterable接口,该接口有一个iterator方法,也就是所以的集合类都可以通过这个iterator方法来转换成Iterator类,用Iterator对象中的h原创 2008-02-01 18:14:00 · 549 阅读 · 0 评论 -
设计模式学习笔记(十六)—Proxy模式
一、 Proxy模式定义:为其他对象提供一种代理以控制这个对象的访问。二、 模式解说Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象原创 2008-02-01 18:18:00 · 5014 阅读 · 0 评论 -
设计模式学习笔记(十四)—Command模式
一、 Command模式定义:将一个请求封装为一个对象,从而使你不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。二、 模式解说Commad模式是一种对象行为模式,它可以对发送者(sender)和接收者(receiver)完全解耦(decoupling)。("发送者" 是请求操作的对象,"接收者" 是接收请求并执行某操作的对象。有了 "解耦",发送者对接收者的接口一无所知原创 2008-02-01 18:15:00 · 844 阅读 · 0 评论 -
设计模式学习笔记(十)—Factory Method模式
《设计模式》一书对Factory Method模式是这样描述的: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 我的理解:FatoryMethod模式是一种创建型模式,定义一个用于创建对象的接口的意思是说,我们要定义一个用于创建对象的接口(或者说抽象类,实际上就是个抽象工厂abstractFactory),它的内部有原创 2008-02-01 18:10:00 · 551 阅读 · 0 评论 -
设计模式学习笔记(十八)—Mediator中介者模式
设计模式学习笔记(十八)—Mediator中介者模式一、 模式定义:用一个中介者对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。二、 结构图 1) 抽象中介者:定义同事(Colleague)对象到中介者(Mediatior)对象的接口,通常是一个事件方法。2) 具体中介者:具体中介者实现抽象中介者声明的方法。知晓所有的具体同事类,原创 2008-02-01 18:21:00 · 1325 阅读 · 0 评论 -
设计模式学习笔记(一)—Facade外观模式
GOF《设计模式》一书对Facade模式是这样描述的: 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。 大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开原创 2008-02-01 17:54:00 · 1703 阅读 · 0 评论 -
设计模式学习笔记(五)—Abstract Factory抽象工厂模式
GOF《设计模式》一书对Abstract Factory模式是这样描述的: 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。 大致意思是说:我们在创建这些对象的时候,并不需要指定它们的具体类,这些具体类的对象是由工厂对象负责实例化的。下面是《Design Patterns Explained》一书的例子,有关计算机系统的显示和打印程序,用来显示和打印的分辨率取决原创 2008-02-01 18:02:00 · 599 阅读 · 0 评论 -
设计模式学习笔记(七)—Observer观察者模式
《设计模式》一书对Observer是这样描述的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。举个例子,在现实生活中,父母与孩子是最亲密的人。父母做为孩子(被观察者)的监护人(观察者),当孩子和别人打架后,一定会告诉他的父母这件事(呵呵,当孩子很小时,通常会告诉父母,长大了以后,可能不会,这里的孩子指的是小孩子),当孩子获得奖学金后,也一定原创 2008-02-01 18:05:00 · 512 阅读 · 0 评论 -
设计模式学习笔记(九)—Singleton模式
《设计模式》一书对Singleton模式是这样描述的:保证一个类只有一个实例,并提供一个访问它的全局访问点。这个模式比较简单,下面给出一个例子:public class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton getInstance(){原创 2008-02-01 18:08:00 · 721 阅读 · 0 评论 -
设计模式学习笔记(十七)—Memento备忘录模式
一、 模式定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存前的状态。二、 模式解说在程序运行过程中,某些对象的状态处在转换过程中,可能由于某种原因需要保存此时对象的状态,以便程序运行到某个特定阶段,需要恢复到对象之前处于某个点时的状态。如果使用一些公有接口让其它对象来得到对象的状态,便会暴露对象的实现细节。三、 结构图 1) 备忘录(原创 2008-02-01 18:19:00 · 995 阅读 · 0 评论 -
设计模式学习笔记(二十)—Visitor访问者模式
Visitor模式定义:表示一个作用于某对象结构中各元素的操作。它可以使你不修改各元素类的前提下定义作用于这些元素的新操作,也就是动态的增加新的方法。Visitor模式结构图: Visitor模式中主要角色:1) 访问者角色(Visitor):为该对象结构(ObjectStructure)中的具体元素提供一个访问操作接口。该操作接口的名字和参数标识了要访问的具体元素角色。这样访问者就可以通过该元素原创 2008-02-01 18:24:00 · 1257 阅读 · 0 评论 -
设计模式学习笔记(二)—Adapter适配器模式
GOF《设计模式》一书对Adapter模式是这样描述的: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。 这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:1) 为都有“显示”(display)行为的点、线、正方形分别创建类。2) 客户对象不必知道自原创 2008-02-01 17:55:00 · 625 阅读 · 0 评论 -
设计模式学习笔记(六)—Decorator装饰模式
《设计模式》一书对Decorator是这样描述的: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。也就是说:动态地给对象添加一些额外的功能。它的工作原理是:创建一个始于Decorator对象(负责新功能的对象)终止于原对象的一个对象的“链”。例如,我们要为超市的收银台设计一个打印票据的程序,有的需要打印票据的头信息,有的需要打印票据的页脚信息,有原创 2008-02-01 18:04:00 · 597 阅读 · 0 评论 -
设计模式学习笔记(十九)—Chain of Responsibility职责链模式
Chain of Responsibility模式定义:为了避免请求的发送者和接收者之间的耦合关系,使多个接受对象都有机会处理请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。我的理解:在不止一个对象可以处理客户端请求的时候,为了使每个对象都有处理请求的机会,把这些对象顺序地串联起来形成一个链,每个被串联的对象都有一个指向下一个对象的指针,当请求到来是,按照顺序,先有第原创 2008-02-01 18:23:00 · 961 阅读 · 0 评论