觀察者模式

定義

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

使用場景

  • 關聯行爲場景,需要注意的是關聯行爲是可拆分的,而不是“組合”關係
  • 事件多級觸發場景
  • 跨系統的消息交換場景,如消息隊列、事件總線處理機制

主要角色

Subject

抽象主題,也就是被觀察(Observable)的角色,抽象主題角色把所有觀察者對象的引用保存在一個集合裏,每個主題都可以有任意數量的觀察者,抽象主題提供一個接口,可以增加和刪除觀察者對象

Concrete Subject

具體主題,該角色將有關狀態存入具體觀察者對象,在具體主題的內部狀態發生改變時,給所有註冊過的觀察者發出通知,具體主題角色又叫做具體被觀察者角色(Concrete Observable)

Observer

抽象觀察者,該角色是觀察者的抽象類,它定義了一個更新接口,使得在得到主題的更改通知時更新自己

Concrete Observer

具體的觀察者,該角色實現抽象觀察者角色所定義的更新接口,以便在主題的狀態發生變化時更新自身的狀態

優點

  • 觀察者和被觀察者直接是抽象耦合,應對業務變化
  • 增強系統靈活性,可擴展性

缺點

在應用觀察者模式時需要考慮一下開發效率和運行效率問題,程序中包括一個被觀察者,多個觀察者,開發和調試會比較複雜,而且在java中消息的通知默認是順序執行,一個觀察者卡頓,會影響整體執行效率,在這種情況下,一般考慮採用異步的方式

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