Java設計模式(十一):觀察者模式

觀察者模式(observer pattern)

觀察者模式(observer pattern):屬於對象的行爲型模式。定義了一種一對多的依賴關係,讓多個觀察者對象同事監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。觀察者模式又叫發佈-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監聽器(Source/Listener)模式或從屬者(Dependents)模式。


觀察者模式UML圖

Java設計模式(十一):觀察者模式

Java


觀察者模式涉及的角色

抽象主題(Subject)角色:Subject 類,它把所有對觀察者對象的引用保存在一個聚集裏,每個主題都可以有任何數量的觀察者。抽象主題提供一個接口,可以增加和刪除觀察者對象。具體主題(ConcreteSubject)角色:將有關狀態存入具體現觀察者對象;在具體主題的內部狀態改變時,給所有登記過的觀察者發出通知。抽象觀察者(Observer)角色:爲所有的具體觀察者定義一個接口,在得到主題的通知時更新自己。具體觀察者(ConcreteObserver)角色:實現抽象觀察者角色所要求的更新接口,以便使本身的狀態與主題的狀態相協調。


示例代碼

抽象主題類 Subject

Java設計模式(十一):觀察者模式

Java

具體主題類 ConcreteSubject

Java設計模式(十一):觀察者模式

Java

抽象觀察者類 Observer

Java設計模式(十一):觀察者模式

Java

具體觀察者類 ConcreteObserver

Java設計模式(十一):觀察者模式

Java

客戶端測試類 TestObserverPattern

Java設計模式(十一):觀察者模式

Java

Java學習資料獲取(複製下段連接至瀏覽器即可)

data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

Java設計模式(十一):觀察者模式

Java

Java學習資料獲取或免費進入課堂權限獲取(複製下段連接至瀏覽器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

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