时,何时和谁分离观察者,我使用公司中不同组提供的第三方库(用C++编写)遇到此问题。当观察者的观察者的寿命长于可观察到的
在Observer的析构函数中,它将它自己从它所订阅的所有观察对象中分离出来,这部分对我来说很有意义。但是在Observable的析构函数中,它会检查observable是否有任何观察者仍然在订阅者列表中。如果是这样,则会引发错误。
我打算把它故意抛出析构函数的错误放在一边。有人可以试着向我解释为什么观察者不应该期望观察者活得更远,或者这只是一个糟糕的设计。如果这是一个糟糕的设计,那么当我们处于观察者超出观察者范围的情况下时,是否有很好的方法来处理它?
我只是想知道为什么观察者的寿命会比观察者短(假设观察者确实是一个观察者,意味着它只要存在观察者就需要观察观察值)。 – Nawaz
我没有很好的答案。我有一个观察是这个库使用了智能指针(boost :: shared_ptr)和原始指针的混合。这个特殊的问题在关机时出现。这可能是因为命令做了一些其他的对象仍然拥有观察者的shared_ptr。 – dln