《Head First設計模式》 讀書筆記02 觀察者模式 Observer


《Head First設計模式》 讀書筆記02 觀察者模式 Observer

觀察者模式

  觀察者模式定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知並自動更新。

  主題(被觀察者)通過一個共同的接口來更新觀察者。

  有多個觀察者時,不可以依賴特定的通知次序。

  觀察者模式提供了一種對象設計,讓主題和觀察者之間松耦合。改變主題或者觀察者其中一方,並不會影響另一方。

 

設計原則

  為了交互對象之間的松耦合設計而努力。

  松耦合的設計之所以能讓我們建立有彈性的OO系統,能夠應對變化,是因為對象之間的互相依賴降到了最低。

 

Java內置的觀察者模式

  主題(被觀察者):擴展自java.util.Observable。(因為是類,所以存在一定的局限性)。

  觀察者:實現java.util.Observer接口。

  通過調用Observable對象的addObserver()和deleteObserver()方法添加或者刪除觀察者。

  被觀察者送出通知時,需要兩個步驟:

  1.調用setChanged()方法,標記狀態已經改變的事實;

  2.調用兩種notifyObservers()方法中的一個:

  notifyObservers()或notifyObservers(Object arg):當通知時,后者的版本可以傳送任何的數據對象給每一個觀察者。

  觀察者接收通知:

  update(Observable o, Object arg)

  主題本身是第一個參數,第二個參數為notifyObservers(Object arg)的數據對象,如果沒有則為空。

  Java內置的Observer模式支持push和pull兩種數據傳遞方式:

  push:由被觀察者把數據推給觀察者。

  pull:觀察者從被觀察者中拉數據。

 

JDK中其他的觀察者模式

  在JavaBeans和Swing中,也都實現了觀察者模式。

  比如:http://www.cnblogs.com/mengdd/archive/2012/09/08/2676587.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM