Java實現觀察者模式

觀察者模式簡介:

定義:定義對象間的一對多的依賴關係,當一個對象的狀態改變時,所有依賴於它的對象都得到通知並被自動更新。

原理:由四部分組成抽象目標類,具體目標類,抽象觀察者類,具體觀察者類

2006716154523319

Subject .java

 

ConcreteSubject .java

 

Observer.java

 

ConcreteObserver.java

 

使用java.util.Observer接口和java.util.Observable類實現觀察者模式:

觀察者實現Observer接口,並重寫其中的update方法,供被觀察者狀態改變時調用。

被觀察者繼承Observable類,在Observable類中有增加,刪除觀察者類的方法,還有通知所有觀察者都update的方法。狀態改變時,先setChanged,再notifyObservers。

Observer接口源碼:

 

Observable類源碼:

 

使用時機:

1. 當一個對象的改變需要同時改變其他對象,而且它不知道具體有多少對象有待改變時, 應該考慮使用觀察者模式;

2. 一個抽象模型有兩個方面,其中一個方面依賴於另一方面, 這時用觀察者模式可以將這兩者封閉在獨立的對象中使它們各自獨立地改變和複用;

3. 觀察者模式所做的工作其實就是在解除耦合。讓耦合的雙方都依賴於抽象,而不是依賴於具體,從而使得各自的變化都不會影響另一邊的變化。

應用:

JUnit中測試結果的輸出(待續)

IOC與觀察者模式結合:http://www.theserverside.com/tt/articles/article.tss?l=SpringLoadedObserverPattern

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