訂閱者發佈者模式進階

                                                                 life is in dream..........


我的 https://blog.csdn.net/qq_35865125/article/details/88322729 這篇文章中使用c++自己實現了這種模式,但是這種模式有一個很大的缺點,發佈者類和訂閱者類是緊密耦合在一起的,因爲在發佈者的發佈函數中需要調用訂閱者的函數。因此,兩者不是獨立的。

https://www.cnblogs.com/itjeff/p/7095398.html 這篇blog的前半部分對這種模式的缺點有介紹。對於這個缺點,《大話設計模式》中的相應章節也提到了,並以c#語言爲例子,給出了使用委託delegate的方式來解決這個問題的方法。

c#提供了delegate,從而可以方便地實現沒有耦合的觀察者訂閱者模式。但是C++語言沒有提供類似的東西,用C++的話,可以用以下方法:

  1. 直接使用boost庫中的signals2  -- https://blog.csdn.net/qq_35865125/article/details/89343429 ,可參照《Boost程序庫完全開發指南》 羅劍鋒,第四版
  2. 自己實現(我還沒有探究)
  3. 使用qt的信號槽機制

Ref:

《大話設計模式》


Releated Link

Boost bind的使用方法: https://my.oschina.net/hevakelcj/blog/114440

用c++實現委託的一個深度方法: https://www.cnblogs.com/cappuccino/p/3262056.html

boost.signal實現多播委託: https://www.xuebuyuan.com/1789320.html

線程安全的觀察者模式 boost signal2:  https://blog.csdn.net/szqsdq/article/details/71945256

外文書:https://theboostcpplibraries.com/boost.signals2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章