Boolan C++ Observer观察者模式

Observer 模式应该可以说是应用最多、影响最广的设计模式之一,在系统开发架构设计中有着很重要的地位和意义。
Observer模式的意图是在对象之间定义一种一对多的依赖关系,当一个对象的状态改变时,所有依赖者都将得到通知并自动更新。
举例来说,有一份数据,用不同的图形表示形式,条形图,扇形图等,当数据改变的时候,所有的图像都要发生改变。用结构图表示

Observer Pattern 结构图

suject对它的观察者进行Attach(注册)和Detach(注销)。Observer将监视某个事件的责任委托给Subject,由Suject通过notify来告知Observer事件发生。

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保存数据和负责通知Observer,用到了Observer的update(使用虚函数继承),是delegation 和 inheritance的组合。在面向对象设计中,出于不同的产品设计逻辑会选择,使用不同的设计模式,一共有23个经典的设计模式,实际上是三大关系composite,delegation和inheritance的组合变形,在设计模式的学习过程中还有很多需要认真研习的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容