觀察者模式屬於設計模式中的行為型模式,也叫發布-訂閱模式,實際上是一種事件監聽機制。
基本思想是:有觀察者和被觀察者兩種角色,當被觀察者的行為有變化的時候(方法被呼叫),觀察者就能被通知到。想成為被觀察者的觀察者,需要在被觀察者那裡登記。
角色:
watcher(觀察者介面)
conwatcher(具體觀察者)
watched(被觀察者介面)
conwatched(具體被觀察者)
**:
觀察者抽象
public
inte***ce watcher
具體觀察者
public
class
conwatcher
implements
watcher
}
被觀察抽象
public
inte***ce watched
具體被觀察者
public
class
conwatched
implements
watched
@override
public
void
detach(watcher w)
/*** 通知所有觀察者
*/@override
public
void
notifywatcher()
}/**
* 被觀察的事件
*/public
void
change()
}
測試
public
class client
}
執行結果:
com
.pattern
.observe
.one
.conwatcher
@9945ce被通知了
com.pattern
.observe
.one
.conwatcher@b5dac4被通知了
由此可見,兩個觀察物件都被通知了 設計模式系列 觀察者模式
觀察者模式定義了物件之間的一對多依賴,讓多個觀察者物件同時監聽乙個主體物件。當主體物件發生變化時,它的所有依賴者 觀察者 都會收到通知並更新。觀察者模式主要用於在關聯行為之間建立一套觸發機制的場景,支援廣播通訊。觀察者模式也被稱為 發布 訂閱模式。場景 新聞社開發了一套新聞訂閱服務,他們會給每個訂閱...
Android設計模式系列 觀察者模式
觀察者模式,是一種非常常見的設計模式,在很多系統中隨處可見,尤其是涉及到資料狀態發生變化需要通知的情況下。本文以abstractcursor為例子,展開分析。觀察者模式,observer pattern,是乙個很實用的模式,本人曾經接觸到的各種平台以及曾經參與專案中列印模板直譯器中都用到了此模式。1...
Android設計模式系列 觀察者模式
觀察者模式,是一種非常常見的設計模式,在很多系統中隨處可見,尤其是涉及到資料狀態發生變化需要通知的情況下。本文以abstractcursor為例子,展開分析。觀察者模式,observer pattern,是乙個很實用的模式,本人曾經接觸到的各種平台以及曾經參與專案中列印模板直譯器中都用到了此模式。1...