分別用C C 和 C 實現簡單的觀察者模式

2022-05-04 19:12:18 字數 1349 閱讀 5945

開發 observer 模式時借助委託,可以進一步簡化開發的過程。由於委託物件支援多路廣播,在observer 類中建立了乙個委託物件wagehandler,通過attach與detach方法可以分別加入或取消委託。如果觀察者想對事物進行監測,只需要加入乙個委託物件即可。然後委託的getinvodationlist方法能獲取多路廣播委託列表,在execute方法中,就是通過去多路廣播委託列表去判斷所繫結的委託數量是否為0。

public

delegate

double handler(double

wages);

public

class

manager

}public

class

employee

}public

class

observe

//通過getinvodationlist方法獲取多路廣播委託列表,如果觀察者數量大於0即執行方法

public

void execute(double

basicwages)

}class

program

}

執行結果:

然後為了加大難度,又用c++編寫了乙個類似例子來實現觀察者模式,當然c++編寫起來相對c#會複雜一些,而且最終實現效果沒有c#好,但是一切都是為了更好的學習和理解語言,這波還是不虧的,c++裡面有個和委託類似的東西,它的名字叫函式指標,然後用set存放函式指標,遍歷執行

#include "

stdafx.h

"using

namespace

std;

typedef

double(*handler)(double wages);//

定義函式指標,功能和c#中的委託類似

class

manager

};class

employee

};class

observe

//刪除觀察者

哈哈,大功告成,擼這種在老闆面前一文不值,自己卻擼的很嗨的**,還真是很開心的呢^^,也許這就是程式猿才能明白的快樂吧

C 實現觀察者模式

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

C 實現觀察者模式

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

觀察者模式 C 實現

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