觀察者模式定義了物件之間的一對多依賴,這樣一來,當乙個物件狀態改變時,他的所有依賴者都會收到通知並自動更新。
就好像下面這樣:當主題物件中的一些狀態發生改變時,就會通知他的觀察者,狗、貓、鴨子等,但是牛並不是觀察者,所以不會收到通知。
從這幅圖我們發現:☐ 所有的觀察者都需要遵守一定的準則,才能區別於非觀察者物件。觀察者會收到通知並更新,說明他們有乙個共同的方法,可以是update(),故我們可以讓他們繼承同乙個介面。☐ 主題物件一定是有乙個觀察者列表,並且這個列表可以動態更新,他在通知時可以根據列表來推送訊息。
說明:subject是主題介面,使用此介面中的registerobserver來註冊介面,等等。 所有潛在的觀察者必須實現觀察者介面,這個介面只有update()乙個方法,當主題狀態改變時它被呼叫。構建觀察者與主題物件構建觀察者
所有的觀察者實現observer
public class catobserver implements observer我們一共實現了三個觀察者}
構建主題物件
被觀察者即主題物件需要繼承observable類
public abstract class observablepublic void addobserver(object o)
.....
}public class subjectobserable extends observable
說明:乙個 observable 物件可以有乙個或多個觀察者。觀察者可以是實現了 observer 介面的任意物件。乙個 observable 例項改變後,呼叫 observable 的 notifyobservers 方法的應用程式會通過呼叫觀察者的 update 方法來通知觀察者該例項發生了改變。實現通知public static void main(string args)《設計模式》觀察者模式 學習筆記
元件協作 模式 現代軟體專業分工之後的第乙個結果是 框架與應用程式的劃分 元件協作 模式通過晚期繫結,來實現框架與應用程式之間的松耦合,是二者之間協作時常用的模式。典型模式 template method strategy observer event 定義物件間的一種一對多 變化 的依賴關係,以便...
設計模式學習筆記 觀察者模式
概述 觀察者模式 oberserver 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並自動更新。實用性 1.當乙個物件有兩個方面,其中乙個方面依賴於另乙個方面。將二者封裝在獨立的物件中以使他們可以各自獨立的改變和復用。2.當乙個物件的改變需要同時改變其他...
設計模式 觀察者模式(2)
被觀察物件向觀察者推送主題的詳情資訊時候,不管觀察者是否需要,這些資訊一般是觀察目標物件的全部或者部分資訊。一般這種模型實現通過update object obj 將觀察目標物件傳入進去。被觀察物件通知觀察者時候,只傳送少量的資訊,如果需要詳情資訊時候,被觀察物件也就是觀察目標物件主動到觀察者當中,...