装饰者模式
一、要完成的任务 星巴兹(Starbuzz)是以扩张速度最快而闻名的咖啡连锁店。如果你在街角看到它的店,在对面街上肯定还会看到另一家。因为扩张速度实在太快了,他们准备更新订单系统,以合乎他们的饮料供应要求。他们原先的类设计是这样的…… 购买咖啡时,也可以要求在其中加入各种调料,例如:蒸奶(Steamed...
View Article观察者模式
一、要完成的任务 此系统中的三个部分是气象站(获取实际气象数据的物理装置)、WeatherData对象(追踪来自气象站的数据,并更新布告板)和布告板(显示目前天气状况给用户看)。 二、Observer模式 1、定义观察者模式 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 2.设计气象站 三、代码实现...
View Article组合模式
设计模式之Composite(组合) Composite定义: 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性....
View Article享元模式
一、FlyWeight模式定义: 运用共享技术有效地支持大量细粒度对象。 二、模式解说 也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来共享的,Flyweight...
View Article抽象工厂模式
抽象工厂模式(Abstract Factory):为创建一组相关或者互相依赖的对象提供一个接口,而无需指定它们对应的具体类。 通用类图如下: 例如,我们现在有两种产品A和B,而产品A和B分别都有两个厂商1和2进行生产,在这里我们把不同的厂商1、厂商2理解为牌子1和牌子2,那么厂商1就生产A1、B1,厂商2生产A2、B2。...
View Article工厂方法设计模式
在设计模式中,Factory Method也是比较简单的一个,但应用非常广泛,EJB,RMI,COM,CORBA,Swing中都可以看到此模式的影子,它是最重要的模式之一.在很多地方我们都会看到xxxFactory这样命名的类,那么,什么是Factory Method,为什么要用这个模式,如何用Java语言来实现该模式,这就是本文想要带给大家的内容. 基本概念...
View Article建造者模式
Builder模式定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到. 为何使用? 是为了将构建复杂对象的过程和它的部件解耦.注意:...
View Article原型模式
原型模式(Prototype)属于创建型模式,实现了对象的创建;具体而言,它实现了对象的复制(拷贝)。 关于对象的复制,我们需要考虑以下两个问题: 1.对象实时状态的复制; 2.对象引用成员变量的复制。...
View ArticleSingleton(单态)模式 和 Double-Checked Locking(双重检查锁定)模式
确保一个特定的类只有一个对象被实例化。 Singleton:用于单线程应用程序 public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是private 只供内部调用 private static Singleton instance = new Singleton();...
View Article命令模式
1.这一节我们的任务是创建一个类似智能家居的万能遥控器,控制各种家电。我们需要将“请求”封装成对象(一个命令对象通过在特定接收者上绑定一组动作来封装请求),以便使用不同的请求、队列、或者日志来参数化其对象——这就是命令模式。 2.我们具体来看一个例子: 首先我们要完成对命令的对象封装: public interface Command { public void execute(); }...
View Article解释器模式
Interpreter模式也叫解释器模式,是由GoF提出的23种设计模式中的一种。Interpreter是行为模式之一,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。 本文介绍设计模式中的解释器(Interpreter)模式的概念,用法,以及实际应用中怎么样使用Interpreter模式进行开发。 Interpreter模式的概念...
View Article中介者模式
中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 通用类图:...
View Article备忘录模式
一、 模式定义: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存前的状态。 二、 模式解说 在程序运行过程中,某些对象的状态处在转换过程中,可能由于某种原因需要保存此时对象的状态,以便程序运行到某个特定阶段,需要恢复到对象之前处于某个点时的状态。如果使用一些公有接口让其它对象来得到对象的状态,便会暴露对象的实现细节。 三、 结构图 1)...
View Article策略模式
设计模式解读之一: 策略模式 1. 模式定义 把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分; 2. 问题缘起 当涉及至代码维护时,为了复用目的而使用继承,结局并不完美。对父类的修改,会影响到子类型。在超类中增加的方法,会导致子类型有该方法,甚至连那些不该具备该方法的子类型也无法免除。示例,一个鸭子类型: public abstract class...
View Article适配器模式
类适配器 客户的开发人员定义了一个接口,期望用这个接口来完成整数的求和操作,接口定义如下: public interface Operation{ public int add(int a,int b); } 开发人员在了解这个接口的定义后,发现一个第三方类,里面有一个方法能实现他们期望的功能,其代码如下: public class OtherOperation{...
View Article访问者模式
具体元素的接口与实现类 public interface Person { void accept(Visitor visitor); } public class Woman implements Person{ public void accept(Visitor visitor) { visitor.visit(this); } }...
View Article