設計模式之行為模式 觀察者(Observer

2021-09-25 21:43:58 字數 955 閱讀 4979

——《設計模式》gof

目標知道它的觀察者。可以有任意多個觀察者觀察同乙個目標。

提供註冊和刪除觀察者物件的介面

為那些在目標發生改變時需獲得通知的物件定義乙個更新介面

將有關狀態存入各concrete observer物件。

當它的狀態發生改變時,向它的各個觀察者發出通知。

維護乙個指向concretesubject物件的引用。

儲存有關狀態,這些狀態應與目標的狀態保持一致。

實現observer的更新介面以使自身狀態與目標的狀態保持一致。

目標與觀察者間的抽象耦合

支援廣播通訊

意外的更新

建立目標到其觀察者的對映

觀察多個目標

誰觸發更新

對已刪除目標的懸掛呼叫

在發出通知前確保目標的狀態本身是一致的。

避免特定與觀察者的更新協議(推/拉模型)

顯示地指定感興趣的改變

封裝複雜的更新語義

結合目標類和觀察者類

class observerstructure

}abstract class observer

class conreteobservera:observer

}class conreteobserverb : observer

}class conreteobserverc : observer

}abstract class subject

public void dettach(observer observer)

public void notify(int value)}}

class concretesubject : subject

行為模式(觀察者模式)

觀察者模式,也稱發布 訂閱模式,定義了乙個被觀察者和多個觀察者的 一對多的物件關係。在被觀察者狀態發生變化的時候,它的所有觀察者都會收到通知,並自動更新。觀察者模式通常用在實時事件處理系統 元件間解耦 資料庫驅動的訊息佇列系統,同時也是mvc設計模式中的重要組成部分。以下我們以訂單建立為例。當訂單建...

行為模式 觀察者 模式

觀察者模式應用比較廣泛,又被稱為 發布 訂閱 模式。它用來定義物件間一種一對多的依賴關係,當乙個物件的狀態發生變化時,所有依賴它的物件都得到通知並被自動更新。觀察者模式的角色有 抽象主題 具體主題 發布者 抽象觀察者和具體觀察者 訂閱者 from abc import abcmeta,abstrac...

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

1 定義 乙個物件狀態改變時 目標物件 所有依賴他的物件 觀察者物件 都需要發生改變。示例 有乙個sender類,負責資料的傳送,display類和media類都需要呼叫sender類中的方法進行資料傳送,當網路連線斷開時,需要通知display和media類停止資料傳送。緊耦合設計 include...