觀察者模式——解耦利器

觀察者模式是一個使用率非常高的模式,常用於 訂閱——發佈系統。
其 最重要的作用就是 解耦,將觀察者和被觀察者解耦,讓他們之間的依賴性更小。具體應用也就是說 讓 UI層 和具體的業務邏輯解耦。

看計算機書籍的定義:定義對象間一種一對多的依賴關係,使得每當一個對象改變狀態,則所有依賴於他的對象都會得到通知和更新。

使用場所:1,事件多集觸發 ;2 跨系統的消息交換場景,例如消息隊列,事件總線的處理機制等。

大致角色分類:

被觀察者(Observable):抽象的角色,把所有觀察者對象的引用保存在一個集合裏,數量不定,對外提供一個接口,方便進行添加和刪除觀察者對象。

具體被觀察者(ConcerteObservable):也就是我們的具體事件,當我們的這個事件內部狀態發生改變時候,給所有的註冊過的觀察者發出通知.

觀察者(Observer): 抽象角色, 觀察者的抽象類,對外提供一個接口,方便得到通知時更新自己。

具體觀察者(ConcereteObserver): 具體的觀察者, 觀察者的接口更新實例類, 當接到通知時候 及時更新自己。

代碼舉例:超市——購物者
觀察者:購物者

這裏寫圖片描述

被觀察者:超市

這裏寫圖片描述

具體實現

  1. 列表內容

輸出內容:

這裏寫圖片描述

這個觀察者的Demo就完成了。

Observer 和Observable 是jdk的內置類型,觀察者這個模式很重要。具體本人就不再做過多的解釋。

小結一下:
觀察者模式主要作用就是對象的解耦,將觀察者和被觀察者完全分離。只是依賴於Observer 和Observable 的抽象。

優點: Observer 和Observable 之間是抽象耦合, 應對業務變化。 增強的系統的靈活性,和擴展性。
缺點: 運行效率問題,一個被觀察者,多個觀察者,開發和調試比較麻煩, java消息通知是默認順序執行的, 一個觀察者卡頓了,整體效率會下降,不過我們可以考慮 異步方式來解決。

觀察者模式——在Android中的應用 ,有時間在告訴大家啦。

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