觀察者模式 Observer
動機(Motivation)
- 在軟件構建過程當中,咱們須要爲某些對象創建一種「通知依賴關係」——一個對象(目標對象)的狀態發生改變,全部的依賴對象(觀察者對象)都將獲得通知。若是這樣的依賴關係過於緊密,將使軟件不能很好地抵禦變化。
- 使用面向對象技術,能夠將這種依賴關係弱化,並造成一種穩定的依賴關係。從而實現軟件體系結構的鬆耦合。
模式定義
定義對象間的一種一對多(變化)的依賴關係,以便當一個對象(Subject)的狀態發生改變時,全部依賴於它的對象都獲得通知並自動更新。——《設計模式》GoFjava
類圖結構
要點總結
- 使用面向對象的抽象,Observer 模式使得咱們能夠獨立地改變目標與觀察者,從而使兩者之間的依賴關係達到鬆耦合。
- 目標發送通知時,無需指定觀察者,通知(能夠攜帶通知信息做爲參數)會自動傳播。
- 觀察者本身決定是否須要訂閱通知,目標對象一無所知。
- Observer 模式是基於事件的 UI 框架中經常使用的設計模式,也是 MVC 模式的一個重要組成部分。
代碼實現
觀察者模式git
上述代碼模擬了兩個場景:github