設計模式 學習筆記 2 觀察者模式

2022-03-11 10:31:56 字數 1304 閱讀 9838

觀察者模式定義了物件之間的一對多依賴,這樣一來,當乙個物件狀態改變時,他的所有依賴者都會收到通知並自動更新

就好像下面這樣:當主題物件中的一些狀態發生改變時,就會通知他的觀察者,狗、貓、鴨子等,但是牛並不是觀察者,所以不會收到通知。

從這幅圖我們發現:☐ 所有的觀察者都需要遵守一定的準則,才能區別於非觀察者物件。觀察者會收到通知並更新,說明他們有乙個共同的方法,可以是update(),故我們可以讓他們繼承同乙個介面。

☐ 主題物件一定是有乙個觀察者列表,並且這個列表可以動態更新,他在通知時可以根據列表來推送訊息。

說明:subject是主題介面,使用此介面中的registerobserver來註冊介面,等等。 所有潛在的觀察者必須實現觀察者介面,這個介面只有update()乙個方法,當主題狀態改變時它被呼叫。

構建觀察者與主題物件

構建觀察者

所有的觀察者實現observer

public class catobserver implements observer

}

我們一共實現了三個觀察者

構建主題物件

被觀察者即主題物件需要繼承observable類

public abstract class observable

public 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 將觀察目標物件傳入進去。被觀察物件通知觀察者時候,只傳送少量的資訊,如果需要詳情資訊時候,被觀察物件也就是觀察目標物件主動到觀察者當中,...