時,何時和誰分離觀察者,我使用公司中不同組提供的第三方庫(用C++編寫)遇到此問題。當觀察者的觀察者的壽命長於可觀察到的
在Observer的析構函數中,它將它自己從它所訂閱的所有觀察對象中分離出來,這部分對我來說很有意義。但是在Observable的析構函數中,它會檢查observable是否有任何觀察者仍然在訂閱者列表中。如果是這樣,則會引發錯誤。
我打算把它故意拋出析構函數的錯誤放在一邊。有人可以試着向我解釋爲什麼觀察者不應該期望觀察者活得更遠,或者這只是一個糟糕的設計。如果這是一個糟糕的設計,那麼當我們處於觀察者超出觀察者範圍的情況下時,是否有很好的方法來處理它?
我只是想知道爲什麼觀察者的壽命會比觀察者短(假設觀察者確實是一個觀察者,意味着它只要存在觀察者就需要觀察觀察值)。 – Nawaz
我沒有很好的答案。我有一個觀察是這個庫使用了智能指針(boost :: shared_ptr)和原始指針的混合。這個特殊的問題在關機時出現。這可能是因爲命令做了一些其他的對象仍然擁有觀察者的shared_ptr。 – dln