觀察者模式 java.util.Observable 與 java.util.Observer 的理解

最近項目需求需要做一個一份數據刷新多個界面,當有數據到來時,同時對註冊的所有界面刷新,在經過考慮後引入了觀察者模式,將需要刷新註冊的界面做爲觀察者,數據Model被觀察者。

下面對觀察者模式的總結:

java.util.Observer 接口用來指定觀察者,觀察者必須實現 void update(Observable o, Object arg) 方法。

java.util.Observable 用來指定觀察物(被觀察者、可被觀察的),並且提供了一系列的方法。這個class需要被觀察物繼承。

s

java.util.Observer 只有一個簡單的方法 void update(Observable o, Object arg)

其中,參數 Observable o 用於指定觸發 update 方法的對象, Object arg 用於指定觸發 update 方法時候的附加參數。

 

下面給個簡單的讀者和出版商爲例說明:

 

 

在代碼裏面很清楚的看到,當出版社出版雜誌的時候,會主動的告知讀者,讀者就會訂閱雜誌,這也是一種主動推送的模式。

 

調用 notifyObservers() 的時候,被觀察者將自己this傳遞給觀察者,目的是爲了讓同一個觀察者可以註冊到不同的被觀察者上面的,而傳過來的 Oberverable o 其實可以用來檢驗到底是誰發過來的消息,根據觀察者感興趣的數據做自己獨立的相應處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章