在C++中将Observed类引用为Observer的成员变量

Reference to Observed class as member variable of the Observer in C++

本文关键字:Observer 成员 变量 引用 C++ 中将 Observed      更新时间:2023-10-16

我正在C++中实现一个Observer模式。观察者对象在收到通知时需要访问Observed类的成员变量。到目前为止,我已经解决了添加对Observed类的引用作为Observer的成员变量的问题,如下所示:

class Observer{
     public:   
     Observer(const Observable& obs) : observed_(obs){}
     void notify(const Event& event){
         // get Observable member and do stuff
     }
     private:
     const Observable& observed_;
}
class Observable{
      public:
      void notify(const Event& event){
           //observer list.notify
      }
}

参考是这种模式的好方法,还是使用其他策略更好?

在这种情况下,我建议将Observable实例作为Event的成员发送,这样一来,观察者可以观察多个对象,并且还可以实现两个类之间的松散耦合。