設計模式(2)observer(觀察者)

2021-08-29 19:24:39 字數 593 閱讀 7294

應用場景:

subject (父類)

timesource (介面)

mocktimesource (實現類)

observer(介面)

mocktimesink (實現類)

模擬的是乙個定時器,到固定的時間,觸發update事件,呼叫所有註冊過這個事件的類的update方法。。。

具體的實現:

junit的testcase:

看圖吧。

呵呵。。。

裡面有一句話,很值得學習:

我們不是把時間傳給notify和update方法。而是讓timesink向mocktimesource索要時間。

我們不想讓mocktimesink 知道 mocktimesource 而是建立了乙個介面timesource。

timesink mocktimesource 之間 通過 timesource。 介面溝通資料。

以上是[b]「拉模型」[/b]

其實在notify和update方法中帶上變化的資料,就是[b]「推模型」[/b]

應用場景:

[b]在增加新的觀察者的時候,被觀察者無須更改,這樣被觀察者就可以保持封閉。[/b]

Observer 觀察者 設計模式

宣告 本博文篇幅短,適合review。一 概念 定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使他們能夠自動更新自己。二 模式結構圖 三 例子 四 優缺點 1 優點 a 降低了觀察者與被觀察者之間的耦合。b subject在傳...

Observer觀察者設計模式

observer設計模式主要包括以下兩種物件 1 被觀察物件 subject,它往往包含其他物件感興趣的東西,上面例子中熱水器中就是subject 被監視物件 2 觀察物件 observer,它觀察著subject,當subject中的某件事發生後,會告知observer,obersver會採取相應...

觀察者(observer)設計模式

假設我們有個高檔的熱水器,我們給它通上電,當水溫超過95度的時候 1 揚聲器會開始發出語音,告訴你水的溫度 2 液晶屏也會改變水溫的顯示,來提示水已經快燒開了。現在假設熱水器由三部分組成 熱水器 警報器 顯示器,它們來自於不同廠商並進行了組裝。那麼,應該是熱水器僅僅負責燒水,它不能發出警報也不能顯示...