觀察者模式 Observer

觀察者模式 Observer

動機(Motivation)

  • 在軟件構建過程當中,咱們須要爲某些對象創建一種「通知依賴關係」——一個對象(目標對象)的狀態發生改變,全部的依賴對象(觀察者對象)都將獲得通知。若是這樣的依賴關係過於緊密,將使軟件不能很好地抵禦變化。
  • 使用面向對象技術,能夠將這種依賴關係弱化,並造成一種穩定的依賴關係。從而實現軟件體系結構的鬆耦合。

模式定義

定義對象間的一種一對多(變化)的依賴關係,以便當一個對象(Subject)的狀態發生改變時,全部依賴於它的對象都獲得通知並自動更新。——《設計模式》GoFjava

類圖結構

要點總結

  • 使用面向對象的抽象,Observer 模式使得咱們能夠獨立地改變目標與觀察者,從而使兩者之間的依賴關係達到鬆耦合。
  • 目標發送通知時,無需指定觀察者,通知(能夠攜帶通知信息做爲參數)會自動傳播。
  • 觀察者本身決定是否須要訂閱通知,目標對象一無所知。
  • Observer 模式是基於事件的 UI 框架中經常使用的設計模式,也是 MVC 模式的一個重要組成部分。

代碼實現

觀察者模式git

上述代碼模擬了兩個場景:github

  • 微信用戶訂閱微信公衆號
  • 新浪微博用戶關注博主
相關文章
相關標籤/搜索