觀察者模式 C 實現

2022-01-12 12:45:36 字數 775 閱讀 2549

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

觀察者模式有四個角色:抽象主題、具體主題、抽象觀察者、具體觀察者。

抽象主題:把所有觀察者物件的引用儲存到乙個聚集裡,每個主題都可以有任何數量的觀察者。

具體主題:將有關狀態存入具體觀察者物件;在具體主題內部狀態改變時,給所有登記過的觀察者發出通知。

抽象觀察者:為所有的具體觀察者定義乙個介面,在得到主題通知時更新自己。

具體觀察者:實現抽象觀察者角色所要求的更新介面,以便使本身的狀態與主題狀態協調。

namespace dp_observer

public abstract class subject

}public class concretesubject : subject

}public class concreteobserver : observer

public override void update()

}}

客戶端呼叫:

var subject = new concretesubject();

subject.add(new concreteobserver(subject, "1"));

subject.add(new concreteobserver(subject, "2"));

subject.state = "changed";

subject.notify();

C 實現觀察者模式

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。完美的將觀察者和被觀察的物件分離開。有時又被稱為 模型 檢視 view 模式 源 收聽者 listener 模式 或為發布 訂閱模式 目標就是通知的發布者,觀察者是通知的訂閱者 接受通知 obse...

C 實現觀察者模式

舉乙個例子 報社發行報紙 你訂閱報紙,一旦有新一期的報紙發行,新報紙就會送到你家裡,只要你一直訂閱,你就一直會收到新報紙 你不再訂閱報紙的時候,就收不到以後的新報紙了 報社運營的時候,一直會有人去訂閱或者取消訂閱報紙.發布者 訂閱者 觀察者模式 publishers subscribers obse...

觀察者模式 C 實現

cpp include include include include 氣象監控應用問題 head first 設計模式案例 using namespace std class observer 觀察者公共介面 class subject 主題公共介面 問題 成員函式為什麼不能用純虛函式?virtu...