Design Pattern
zigzagsoft
这个作者很懒,什么都没留下…
展开
-
Abstract Factory 抽像工厂
模式定义 Abstract Factory模式定义了如何实例化一组对象系列,这些对象可能相关可能互为利用。客户在创建的时候无须指定这些对象属于什么类型,它只需关注是谁生产的。具体生产出来的一系列对象的细节和类别则由某个工厂负责。 使用范围 系统需要独立于组成它的对象系列的创建、组织和表现的时候 需要组合一系列的对象,这些对象作为整体作用于一个系统的时候 使用方法原创 2008-07-05 00:15:00 · 668 阅读 · 0 评论 -
Memento 备忘模式
模式定义 备忘模式很简单。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 使用方法 必须保存一个对象在某一个时刻的(部分)状态, 这样以后需要时它才能恢复到先前的状态。 使用范围 程序有时需要保持某个对象在某个时刻的状态。 JSP表单提交后的错误提示等案例中用的较原创 2009-12-07 14:26:00 · 409 阅读 · 0 评论 -
Observer 观察者模式
模式定义 某个对象改变时,需要动态地通知其他对象。使用观察者模式,很好地将被观察者和观察者隔离开来。观察者无需知道对方何时会发生数据或状态的改变;被观察者也不用知道它所通知的观察者究竟是谁。 使用方法 将观察者注册到被观察对象中,当被观察的对象发生改变时,及时地通知已注册的观察者对象。 使用范围 一个对象的改变需要依赖以其他对象的改变。原创 2009-12-07 14:28:00 · 413 阅读 · 0 评论 -
Strategy 策略模式
模式定义 Strategy模式定义了一系列不同的算法封装成不同的类,使客户端通过环境类来调用这些不同的算法类,实现统一对象的不同行为。 使用范围 同一个对象在不同的情形下具有不同的行为 举例说明 假设现有两个数字,他们在不同的情况下需要做不同的数学运算,加减乘除,具体由客户端来决定何时实现这些不同行为。我们首先定义一个Strategy原创 2009-12-10 17:01:00 · 445 阅读 · 0 评论 -
Flyweight模式
模式定义 Flyweight模式尤其适用于需要创建大量的颗粒对象,而这些对象在某些属性上又极为相似或着能够抽取出相同的属性的情况下,能大幅提高性能减少内存使用。 使用范围 需要创建大量的颗粒对象(细微的,但是纹理清晰的) 一个对象的外在属性能够抽取出来可供共享的 举例说明 假设需要在一个面板上绘出大量随机的圆圈图像,这些圆圈颜色是随机原创 2009-12-10 17:03:00 · 519 阅读 · 0 评论 -
State 模式
模式定义 State模式允许一个对象在内部状态改变时它的行为也随着改变,实现其类在运行时的动态修改。 使用范围 行为取决于对象的状态 太多的分支语句来区别处理不同状态下的行为 使用方法 举例说明 Socket网络编程中假设我们定义它有三个状态,Open, Listen和Close。从不同的状态中抽象出一个接口 Tcp原创 2009-12-10 16:59:00 · 456 阅读 · 0 评论 -
Visitor 观察者模式
模式定义 观察者模式将类的结构与操作于该类上的算法分离开,使得模式的使用者能在不改变类结构的前提下自由地对类中的元素进行不同的操作。 使用方法 Visitor将自己注册到类对象中,由类对象通过回调的方式来启动观察者访问操作类内部的数据元素或结构。 使用范围 类结构内部包含很多具有不同接口的类对象,需要定义针对于具体类的操作 需要对于类原创 2009-12-10 16:50:00 · 471 阅读 · 0 评论 -
Decorator 装饰者模式
模式定义 面向对象的其中一个重要概念就是继承。通过子类继承父类来扩充父类不具备的属性与方法,这个过程是在编译期完成的。假设我们现在需要一个不一样的功能,动态地扩充父类的方法,或者扩充其中一个子类的方法,或者组合各个子类的方法实现一个完整的功能,如果用继承的方式来实现,势必需要大量的不确定的定义类。因此可以采用装修者的模式在运行阶段动态的定义类。 使用范围 动态地扩充子类的功能原创 2012-10-02 10:57:31 · 616 阅读 · 0 评论 -
Facade 外观模式
模式定义 随着系统越来越复杂庞大,定义的类及其衍生的子类也会越来越多,系统的重用性也得到了加强。然而对于一些简单客户端来讲,过于复杂的子系统只会增加对他们的强耦合,一旦子系统变动,所有的客户端也必须跟着改动。外观模式在一定程度上解决了这个问题。它把客户端需要实现的功能包裹起来,客户端只需要访问它这么一个外观,无须窥探内部细节。而子系统的变动,只会影响外观模式本身做少量的变动。外观模式属于技巧性比原创 2012-10-02 11:02:43 · 636 阅读 · 0 评论 -
Interpreter 解释器模式
模式定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 该模式比较复杂,且不常用。 使用方法 文法的定义一般由需求而决定。解释器即根据文法定义来设计。使用方法不具备通用性。 使用范围 * 需要自定义一个语言,由解释器来翻译文法。 举例说明 回忆在大学中学到的数学方面的逆波兰式,它遵循数学的运算法则。假设现在有一个逆波兰式原创 2012-10-02 11:10:51 · 612 阅读 · 0 评论 -
Mediator 中介模式
模式定义 使用一个中介对象来封装一系列对象之间的交互。中介者可以独立开这些对象之间的相互引用,使其耦合松散,并可以改变他们之间的交互。 使用方法 一系列的对象向中介注册,将他们之间的相互耦合关系交由中介统一管理。 使用范围 对象之间相互引用且逻辑过于复杂的时候。 当引入一个新的对象后导致其他已存在的对象需要重新改变相互之间的逻辑的时候原创 2009-12-07 14:20:00 · 439 阅读 · 0 评论 -
Iterator 迭代模式
模式定义 迭代模式提供了一种方法顺序用来访问一个聚合对象中的各个元素, 而又不需暴露该对象的内部表示。如今该模式已被java集成到了util类库中,我们常常可以同过Collection接口以及其下的Iterator来进行集合遍历的操作。 使用方法 迭代模式使用next或者previous等的方法提供给外部一种可遍历的功能。 使用范围 访问一个聚合原创 2009-12-06 15:10:00 · 800 阅读 · 0 评论 -
Factory Method 工厂模式
模式定义 Factory Method工厂方法模式定义了个一个用于创建一系列对象的抽像接口,让它的每一个子类来决定具体实例化哪个类。它使得一个类的实例化延迟到了子类中实现。 使用范围 当某个类不知道它所创建的类属于何种对象的时候 当某个类希望由它的子类来指定它所创建的对象的时候 使用方法 先看一个类结构图: Product是一个产品类,包含了多个原创 2008-07-11 16:51:00 · 705 阅读 · 0 评论 -
Builder 建造者模式
模式定义Builder模式很好地将一个复杂对象的创建与该对象内部的各个部件的组装分离开来。它和 Abstract Factory模式有相似的地方,但是Abstract Factory主要提供了一个创建一些列相关或相互依赖的对象的接口,无需知道指定他们具体的类(生产者),而Builder模式着重于部件的组装和对象创建的关系。 使用范围 对象的创建由一系列复杂的部件组装而成时 不同的原创 2008-07-18 16:41:00 · 487 阅读 · 0 评论 -
Prototype 原型模式
模式定义Prototype原型模式将创建一个对象定义为一个原型实例,并且通过拷贝这些原型来创建新的相似的对象。 使用范围 当需要创建的一组对象在组织结构与内部实现上有很强的相似性时 原型与克隆后的对象互不相干 使用方法 对于原型Prototype我们可以将它定义为抽象类,实现了Cloneable接口的方法Clone()。所有的它的子类将会拥有父类的Clone方法并返回自原创 2008-07-29 12:54:00 · 719 阅读 · 0 评论 -
Singleton 单态模式
模式定义Singleton模式定义了个一个类只有一个实例,无论调用的方法来自何方。这个类实例具有全局变量的性质。 使用范围 系统需要某个类必须只有一个实例 系统需要某个类必须一次性的初始化某个过程 使用方法 举例说明public class MySingleton { private static MySingleton s = new MySi原创 2008-09-23 16:04:00 · 592 阅读 · 0 评论 -
Adapter 适配器模式
模式定义Adapter适配器模式将不适合客户类使用的接口重新包装,以实现接口的重用。 使用范围 现有的类不能被客户类直接使用或不方便使用 使用方法适配器模式分两类: 类适配器:类适配器是通过继承类适配者类(Adaptee Class)实现的,另外类适配器实现客户类所需要的接口。当客户对象调用适配器类方法的时候,适配器内部调用它所继承的适配者的方法。 对象原创 2008-11-21 13:28:00 · 530 阅读 · 0 评论 -
Composite 组合模式
模式定义在实际的编程中常常出现这样的情形:A对象包含了另外一个对象B,而B又包含了其他对象C和D,好比一棵树,树枝上有树枝,树枝上再有小树枝或树叶,这样的层次结构可以用Composite模式来实现。因此Composite模式将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 使用范围 多个对象之间存在层次组合的结构 使组合对象或原创 2009-01-23 12:45:00 · 532 阅读 · 0 评论 -
Bridge 桥接模式
模式定义Bridge模式将对象的抽象和行为剥离开来,实现两者之间的松耦合,以便抽象与行为的自由组装。使用范围 不希望抽象和行为有太多的耦合或关联 对象或类的抽象与行为可以无限制地通过各自的子类来扩充 使用方法将对象的属性抽象出来为一个abstract的类,同时将它的行为同属性剥离,作为一个自由的接口或抽象类。当客户方需要实现一个对象的属性和行为的时候,可以根据条件自由装配是原创 2008-12-04 12:30:00 · 535 阅读 · 0 评论 -
Template Method 模板模式
模式定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,从而使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 使用方法各子类中公共的方法提炼出来,集中到父类中定义。而不同的子类所特有的方法,可以通过继承父类的方法在内部自定义。 使用范围 * 多个子类存在共通的方法,个别的方法存在区别。 举例说明假设盖一个房子,需要如下三种通用的步骤,des原创 2009-10-09 23:55:00 · 403 阅读 · 0 评论 -
Chain of Responsibility 责任链模式
模式定义责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。责任链模式要求某个处理对象要么直接处理,要么转到下一个链处理,不允许处理一半再移交一半。 Windows操原创 2009-12-02 08:58:00 · 402 阅读 · 0 评论 -
Command 命令模式
模式定义 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。因此命令模式把一个请求或者操作封装到一个对象中,允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 使用方法 命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接原创 2009-12-06 15:03:00 · 434 阅读 · 0 评论 -
Proxy 代理模式
模式定义 当客户类因为不适合、性能限制或者权限问题而无法(或性能较差)访问一种对象的时候,提供一种代理的机制,由代理来完成客户类的一系列请求。改代理能比较好地直接访问该对象。 使用方法 Proxy替Client来完成对RealSubject的直接访问。 使用范围 代理使用的范围比较多,如: 远程代理,适合远距离的对象传输或不在同一个地址空间内而比较耗时的对象访问原创 2012-10-02 11:07:13 · 624 阅读 · 0 评论