是什麼?
當對象之間存在一對多的關係時,一個對象發生改變通知它所依賴的對象,這種行爲型模式我們稱之爲觀察者模式。
爲什麼?
解決當一個對象的狀態發生改變,需要通知到其他所有它所依賴的對象的問題,並且要做到易用和低耦合,並且保證高度的協作。
怎麼做?
觀察者模式有三個組成部分:
1. 觀察者(Observer)
2. 被觀察者(Observable)
3. Client程序
分析:
在java的util包中已經定義了觀察者Observer接口和被觀察者類Observable,那麼如何在Client中讓觀察者和被觀察者關聯起來,並做到被觀察則發生變化時立刻通知觀察者呢?具體採取的做法是:
1.新建觀察者對象
//新建觀察者
Observer1 observer1 = new Observer1();
Observer2 observer2 = new Observer2();
Observer3 observer3 = new Observer3();
2.新建被觀察者對象
//新建被觀察者
Observable observable = new Observable();
3.觀察者訂閱被觀察者的狀態
//三個觀察者進行觀察
observable.addObserver(observer1);
observable.addObserver(observer2);
observable.addObserver(observer3);
其實在這裏本質上是將觀察者對象全部注入被觀察者對象內,這樣可以做到當被觀察者對象內部有任何變化即可通知到其所持有觀察者。
具體代碼詳見:設計模式學習