C 實現觀察者模式

2021-10-02 05:19:48 字數 1449 閱讀 1513

舉乙個例子:

報社發行報紙

你訂閱報紙, 一旦有新一期的報紙發行, 新報紙就會送到你家裡, 只要你一直訂閱, 你就一直會收到新報紙

你不再訂閱報紙的時候, 就收不到以後的新報紙了

報社運營的時候, 一直會有人去訂閱或者取消訂閱報紙.

發布者 + 訂閱者 = 觀察者模式

publishers + subscribers = observer pattern

在觀察者模式裡, 我們把報社叫做被觀察物件(subject), 把訂閱者叫做觀察者(observers)

簡單實現1:

using system;

using system.reflection;

namespace csharptest01

public void removeevent(boilhandler method)

public void boilwater()}}

private void broadcastevents(int param)}}

// observers:subscribers訂閱者/觀察者,如讀者,水壺報警器

class alarm

", param);}}

// observers:subscribers訂閱者/觀察者,如讀者,水壺顯示器

class display

", param);}}

class program

}}

簡單實現2:不用委託與事件的實現

using system;

using system.collections.generic;

namespace csharptest01

public string info

public tenxun(string symbol, string info)

public void addobserver(iobserver ob)

public void removeobserver(iobserver ob)

public void update()}}

}// 具體訂閱號類

public class tenxungame : tenxun

}// 訂閱者介面

public inte***ce iobserver

public class subscriber : iobserver

public subscriber(string name)

public void receiveandprint(tenxun t)

,symbol:,info:", name, t.symbol, t.info);}}

class program

}}

C 實現觀察者模式

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

觀察者模式 C 實現

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。觀察者模式有四個角色 抽象主題 具體主題 抽象觀察者 具體觀察者。抽象主題 把所有觀察者物件的引用儲存到乙個聚集裡,每個主題都可以有任何數量的觀察者。具體主題 將有關狀態存入具體觀察者物件 在具體...

觀察者模式 C 實現

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