——《設計模式》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...