舉乙個例子:
報社發行報紙
你訂閱報紙, 一旦有新一期的報紙發行, 新報紙就會送到你家裡, 只要你一直訂閱, 你就一直會收到新報紙
你不再訂閱報紙的時候, 就收不到以後的新報紙了
報社運營的時候, 一直會有人去訂閱或者取消訂閱報紙.
發布者 + 訂閱者 = 觀察者模式
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...