行为型模式
1) 观察者模式
定义:定义了一种一对多的依赖关系,让多个观察者对象 同时监听某一个主题对象。这个主题对象在状态发生变化时, 会通知所有观察者对象,使它们能够自动更新自己。
绘图:
场景:
附注:
Subject可翻译为主题或抽象通知者,一般用一个抽象类或者一个接口实现。它把所有对观察者 对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增 加和删除观察者对象。
Observer抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。这 个接口叫做更新接口。抽象观察者一般用一个抽象类或者一个接口实现。更新接口通常包含一个 方法,这个方法叫做更新方法。
ConcreteSubject叫做具体主题或具体通知者,将有关状态存入具体现察者对象;在具体主题的 内部状态改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个具体子类实现。
ConcreteObserver具体观察者,实现抽象观察者角色所要求的更新接口,以便使本身的状态与 主题的状态相协调。具体观察者角色可以保存一个指向具体主题对象的引用。具体观察者角色通常用一个具体子类实现。
将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对 象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。而观察者模式的关键对象是主题和观察者可以有任意数目的依赖。它的Observer,一旦Subject的状态发生了改变,所有的都可以得到通知。Subject发出通知时 并不需要知道谁是它的观察者,也就是说,具体观察者是谁,它根本不需要知道。而任何一个具体观察 者不知道也不需要知道其他观察者的存在。
代码:见附录。(需要手工处理,进Eclipse编译最佳!)
2) 策略模式 Strategy
定义:定义了算法家族,分别封装起来,让 它们之间可以互相替换,此模式让算法的变化,不会影响到使 用算法的客户。
绘图:
场景:
附注:
策略模式是一种定义一系列算法的方法,从概念上来看,所有这些 算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类 与使用算法类之间的耦合。
策略模式的5的快歡类层次为定义了一系列的可供重用的算法或行为。继承有助于析取出这些算法中的公共功能【0?】。对于打折、返利或者其他的算法,其实都是对实际商品收费的一种汁算 方式,通过继承,可以得到它们的公凡功能,
策略模式与简单工厂的比较
如果外部,不论是所谓的Context还是client持有一个引用,那么是否可以认为该引用在模式中一定是一个抽象类,而不能是接口(否则无法实例化?)
代码:见附录。(需要手工处理,进Eclipse编译最佳!)
3) 状态模式 State
定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
绘图:
场景:
附注:
代码:见附录。(需要手工处理,进Eclipse编译最佳!)
4) 命令模式 Command
定义:
绘图:
场景:
附注:
代码:见附录。(需要手工处理,进Eclipse编译最佳!)
posted on 2013-10-11 12:37 heartstage 阅读(209) 评论(0) 编辑 收藏 举报