名稱:觀察者模式(Observer Pattern)
問題:Observer pattern defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. It is also referred to as the publish-subscribe pattern.
解決方案:
1,、 模式的參與者1、Subject -目標知道它的觀察者,。可以有任意多個觀察者觀察同一個目標,。 -提供注冊和刪除觀察者對象的接口,。 2、Observer -為那些在目標發(fā)生改變時需獲得通知的對象定義一個更新接口,。 3,、ConcreteSubject -將有關(guān)狀態(tài)存入各ConcreteObserver對象。 -當它的狀態(tài)發(fā)生改變時,,向他的各觀察者發(fā)出通知,。 4、ConcreteObserver -維護一個指向ConcreteSubject對象的引用,。 -存儲有關(guān)狀態(tài),,這些狀態(tài)應與目標的狀態(tài)保持一致。 -實現(xiàn)Observer的更新接口以使自身狀態(tài)與目標的狀態(tài)保持一致,。
2.實現(xiàn)方式
abstract class Subject { protected List<Observer> observers=new ArrayList<Observer>(); public void add(Observer observer) { observers.add(observer); } public void remove(Observer observer) { observers.remove(observer); } public abstract void notifyObserver(); } class ConcreteSubject extends Subject { public void notifyObserver() { for(Object obs:observers) { ((Observer)obs).response(); } } } interface Observer { void response(); } class ConcreteObserver1 implements Observer { public void response() { System.out.println("Observer1 action"); } } class ConcreteObserver2 implements Observer { public void response() { System.out.println("Observer2 action"); } }
參考資料《設計模式:可復用面向?qū)ο筌浖幕A(chǔ)》 |
|
來自: 昵稱70680357 > 《待分類》