美文网首页
Boolan C++ Observer观察者模式

Boolan C++ Observer观察者模式

作者: wild_horse | 来源:发表于2017-02-16 20:14 被阅读0次

    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的组合变形,在设计模式的学习过程中还有很多需要认真研习的。

    相关文章

      网友评论

          本文标题:Boolan C++ Observer观察者模式

          本文链接:https://www.haomeiwen.com/subject/zomhwttx.html