2011年9月27日

二十二.行为型设计模式——Observer Pattern(观察者模式)

摘要: 定义: 定义对象间的一种一对多依赖关系,使得每当一个对象改变状态,则其相关依赖对象皆得到通知并被自动更新。 UML类图如下: 其中类和对象的关系为: 1.Subject(被观察对象):了解其多个观察者,任意数量的观察者可以观察一个对象;提供一个接口用来缚定(attaching)及分离(detaching)观察者对象。 2.ConcreteSubject(具体被观察对象):储存具体观察者(ConcreteObserver)有兴趣的状态;当其状态改变时发送一个通知给其所有的观察者对象。 3.Observer(观察者):定义一个更新(updating)接口,在一个被观察对象改变时应被... 阅读全文

posted @ 2011-09-27 23:13 tLEE 阅读(1250) 评论(0) 推荐(0)

2011年9月26日

二十一.行为型设计模式——Memento Pattern(备忘录模式)

摘要: 定义: 在不破坏封装的前提下,捕获并且保存一个对象的内部状态,这样可以将对象恢复到原先保存的状态。 UML类图如下: 其中类和对象的关系为: 1.Memento(备忘录):保持Originator(原发器)的内部状态,根据原发器来决定保存哪些内部的状态;保护原发器之处的对象访问备忘录,备忘录可以有效地利用两个接口,看管者只能调用狭窄(功能有限)的接口——它只能传递备忘录给其他对象,而原发器可以调用一个宽阔(功能强大)的接口,通过这个接口可以访问所有需要的数据,使原发器可以返回先前的状态,理想的情况是,只允许生成本备忘录的那个原发器访问本备忘录的内部状态。 2.Originat... 阅读全文

posted @ 2011-09-26 23:38 tLEE 阅读(409) 评论(0) 推荐(0)

2011年9月23日

二十.行为型设计模式——Mediator Pattern(中介者模式)

摘要: 定义 定义一个对象封装一系列多个对象如何互相作用。Mediator中介者使得对象之间不需要显示地互相引用,从而使得其耦合更加松散。并且还让我们可以独立变化多个对象的互相作用。 UML类图如下: 其中类和对象的关系为: 1.Mediator(抽象中介者):定义一个接口用于与各同事对象(Colleague)之间的通信。 2.ConcreteMediator(具体中介者):协调各个同事对象实现协作的行为;掌握并且维护它的各个同事对象引用。 3.Colleague(同事类):每一个同事对象都引用一个中介者对象;每一个同事对象在需要和其他同事对象通信时,就与它的中介者通信。 典型应... 阅读全文

posted @ 2011-09-23 23:50 tLEE 阅读(405) 评论(0) 推荐(0)

2011年9月21日

十九.行为型设计模式——Iterator Pattern(迭代器模式)

摘要: 定义 提供一种方法可以访问聚合对象,而不用暴露这个对象的内部表示。 UML类图如下: 其中类和对象的关系为: 1.Iterator(迭代器):迭代器定义访问和遍历元素的接口。 2.ConcreteIterator(具体迭代器):实现迭代器的接口;在遍历时跟踪当前聚合对象中的位置。 3.Aggregate(聚合):定义一个创建迭代器对象的接口。 4.ConcreteIterator(具体聚合):实现创建迭代对象,返回一个具体迭代器的实例。 典型应用的顺序图如下: 实例1——遍历例子: 下面的遍历例子延时了迭代器模式的应用。例子采用迭代来遍历集合中的子项目,定义了迭... 阅读全文

posted @ 2011-09-21 23:46 tLEE 阅读(546) 评论(0) 推荐(0)

2011年9月20日

十八.行为型设计模式——Interpreter Pattern(解释器模式)

摘要: 定义 给出一种语言,定义这种语言的文法的一种表示,定义一个解释器,用它来解释使用这种语言的句子。 UML类图如下: 其中类和对象之间的关系为: 1.AbstractExpression(抽象表达式类):定义一个接口来执行解释操作。 2.TerminalExpression(终结符表达式):实现文法中管理终结符的解释操作;文句中的每个终结符都需要一个实例。 3.NonterminalExpression(非终结符表达式):文法中的每一条规则R::=R1R2....Rn都需要一个非终结符表达式类;维护每一条规则R1到Rn具有AbstractExpression接口实例;实现文法中关... 阅读全文

posted @ 2011-09-20 00:20 tLEE 阅读(671) 评论(0) 推荐(0)

2010年11月15日

十七.行为型设计模式——Command Pattern(命令模式)

摘要: 定义 将一个请求封装成一个对象,因此可以参数化多个客户的不同请求,将请求排队,记录请求日志,并且支持撤销操作。 UML类图如下: 其中类和对象之间的关系为: 1. Command(抽象命令):声明执行操作的一个接口。 2. ConcreteCommand(具体命令类):将一个接收者对象绑定于一个动作;实现Execute方法,以调用接收者的相关的操作(Action)。 3. Client(客户应用程序):创建一个具体命令类的对象,并且设定它的接收者。 4. Invoker(调用者):要求一个命令对象执行一个请求。 5. Receiver(接收者):知道如何执行关联请求的相关操... 阅读全文

posted @ 2010-11-15 23:14 tLEE 阅读(652) 评论(0) 推荐(0)

2010年11月14日

十六.行为型设计模式——Chain of Responsibility(责任链模式)

摘要: 定义  避免请求发送者与接受者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。  UML类图如下:    其中类和对象的关系:  1. Handler(传递者接口):定义一个处理请求的接口;实现链中下一个对象(可选)。  2. ConcreteHandler(具体传递者):处理它所负责的请求;可以访问链中下一个对象;如果可以处理请求,就... 阅读全文

posted @ 2010-11-14 23:17 tLEE 阅读(1140) 评论(0) 推荐(0)

2010年11月9日

十五.结构型设计模式——Proxy Pattern(代理模式)

摘要: 定义  为其他对象提供一个代理或地方以控制对这个对象的访问。当客户向proxy对象第一次提出请求时,proxy实例化真实的对象,并且将请求传给它,以后所有的客户请求都经由proxy传给封装了的真实对象。  proxy模式分为4种,用得最多的是远程和虚拟代理模式:  1. Virtual Proxy(虚拟代理):Proxy不会生成一个真实的耗费代理,直到非常必要时(首次有请求)。它用来存放花费大(实... 阅读全文

posted @ 2010-11-09 22:18 tLEE 阅读(547) 评论(0) 推荐(0)

2010年11月8日

十四.结构型设计模式——Flyweight Pattern(轻量级模式)

摘要: 定义  运用共享技术有效地支持大量细粒度的对象,系统只使用少量的对象,而这些对象都相近,状态变化很小,对象使用次数增多。  UML类图如下:    其中类和对象的关系:  1. Flyweight(抽象轻量级类):声明一个接口,通过它可以接受外来的参数(状态),并对新状态做出出来(作用)。  2. ConcreteFlyweight(具体轻量级类):实现Flyweight的接口,并为内部状态增加存... 阅读全文

posted @ 2010-11-08 22:30 tLEE 阅读(856) 评论(0) 推荐(0)

2010年11月5日

十三.结构型设计模式——Facade Pattern(外观模式)

摘要: 定义 外观模式提供了一个统一的接口去访问多个子系统的多个不同的接口,外观模式定义了一个高层次的接口,使得子系统更容易被使用。 UML类图如下: 其中类和对象的关系为: 1. Facade(外形类):知道哪些子系统负责处理哪些请求;将客户的请求传递给相应的子系统对象处理。 2. Subsystem(子系统类):实现子系统的功能;处理由Facade传过来的任务;子系统不用知道Facade,在任何地方也没有引用Facade。 典型应用的顺序图如下: 实例1——抵押申请审核 抵押申请要得到三个审核,要检查银行是不是有足够存款,抵押物价格评估是不是合理,客户信誉评估是不是好。这三个评... 阅读全文

posted @ 2010-11-05 22:17 tLEE 阅读(469) 评论(0) 推荐(0)

导航