行為型 觀察者模式(Observer)

2021-08-05 20:48:13 字數 868 閱讀 6235

觀察者模式(observer pattern):定義物件之間的一種一對多依賴關係,使得每當乙個物件狀態發生改變時,其相關依賴物件皆得到通知並被自動更新。觀察者模式的別名包括發布-訂閱(publish/subscribe)模式、模型-檢視(model/view)模式、源-***(source/listener)模式或從屬者(dependents)模式。觀察者模式是一種物件行為型模式。

在觀察者模式結構圖中包含如下幾個角色:

● subject(目標):目標又稱為主題,它是指被觀察的物件。在目標中定義了乙個觀察者集合,乙個觀察目標可以接受任意數量的觀察者來觀察,它提供一系列方法來增加和刪除觀察者物件,同時它定義了通知方法notify()。目標類可以是介面,也可以是抽象類或具體類。

● concretesubject(具體目標):具體目標是目標類的子類,通常它包含有經常發生改變的資料,當它的狀態發生改變時,向它的各個觀察者發出通知;同時它還實現了在目標類中定義的抽象業務邏輯方法(如果有的話)。如果無須擴充套件目標類,則具體目標類可以省略。

● observer(觀察者):觀察者將對觀察目標的改變做出反應,觀察者一般定義為介面,該介面宣告了更新資料的方法update(),因此又稱為抽象觀察者。

● concreteobserver(具體觀察者):在具體觀察者中維護乙個指向具體目標物件的引用,它儲存具體觀察者的有關狀態,這些狀態需要和具體目標的狀態保持一致;它實現了在抽象觀察者observer中定義的update()方法。通常在實現時,可以呼叫具體目標類的attach()方法將自己新增到目標類的集合中或通過detach()方法將自己從目標類的集合中刪除。

觀察者模式(行為型)

1.1定義 觀察者模式 定義物件之間的一種一對多依賴關係,使得每當乙個物件狀態發生改變時,其相關依賴物件都得到通知並被自動更新。觀察者模式的定義說明 1.2角色 觀察者模式包含以下4個角色 1.3優點 1.4缺點 1.5適用環境 1.6教學例子 1 分析 軟體系統 乙個物件的狀態或行為的變化將導致其...

行為型設計模式 觀察者模式

觀察者模式定義一種一對多的依賴關係,讓多個觀察者物件同時監聽某一種主題物件,這個主題物件在狀態發生變化時,會通知所有觀察者物件,使他們能夠自動更新。也就是說乙個類物件可以有多個監聽,當某乙個屬性或者方法發生變化,對應的多個監聽就被觸發,執行各自方法,實現更新。解決思路 定義乙個觀察者模式介面,其實現...

觀察者模式 行為

當物件間存在一對多關係時,則使用觀察者模式 observer pattern 比如,當乙個物件被修改時,則會自動通知依賴它的物件。觀察者模式屬於行為型模式。意圖 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。主要解決 乙個物件狀態改變給其他物...