Boolan C++ Observer观察者模式

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

Boolan C++ Observer观察者模式_第1张图片
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;iupdate(value);
  }
private:
  int _value;
  vector views;
};

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

你可能感兴趣的:(Boolan C++ Observer观察者模式)