我正在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的成员发送,这样一来,观察者可以观察多个对象,并且还可以实现两个类之间的松散耦合。