Boolan C++ Observer觀察者模式

Observer 模式應該可以說是應用最多、影響最廣的設計模式之一,在系統(tǒng)開發(fā)架構(gòu)設計中有著很重要的地位和意義。
Observer模式的意圖是在對象之間定義一種一對多的依賴關系,當一個對象的狀態(tài)改變時,所有依賴者都將得到通知并自動更新。
舉例來說,有一份數(shù)據(jù),用不同的圖形表示形式,條形圖,扇形圖等,當數(shù)據(jù)改變的時候,所有的圖像都要發(fā)生改變。用結(jié)構(gòu)圖表示

Observer Pattern 結(jié)構(gòu)圖

suject對它的觀察者進行Attach(注冊)和Detach(注銷)。Observer將監(jiān)視某個事件的責任委托給Subject,由Suject通過notify來告知Observer事件發(fā)生。

class suject
{
public:
  void attach(Observer* obs);
  void detach(Observer* obs);
  void notify()
  {
  for(int i=0;i<views.size();++i)
  views[i]->update(value);
  }
private:
  int _value;
  vector<Observer*> views;
};

這是Suject類的骨架,Suject保存數(shù)據(jù)和負責通知Observer,用到了Observer的update(使用虛函數(shù)繼承),是delegation 和 inheritance的組合。在面向?qū)ο笤O計中,出于不同的產(chǎn)品設計邏輯會選擇,使用不同的設計模式,一共有23個經(jīng)典的設計模式,實際上是三大關系composite,delegation和inheritance的組合變形,在設計模式的學習過程中還有很多需要認真研習的。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容