现在,我正在开发一个c ++应用程序,并且面临共享实例的问题。
对于这个问题,我创建了一个简单的类图。我想为类A和C共享HogeDataManager。A创建HogeDataManager并通过其公共方法读取HogeData。然后B向HogeDataManager添加一些数据。
为了共享HogeDataManager,我必须为B和C准备set_mgr方法。但是我认为这不是一个聪明的方法。当然,如果我采用Singleton模式,它将得到解决。但是Singleton有时很危险,因此我想找到避免这种问题的更好方法。
最佳答案
您的设计很好:
A创建HogeDataManager,并将其传递给B,然后将B传递给C。
最后,只是遗漏了决定销毁HogeDataManager的决定(对象A,B或C负责)。
如果您不愿意,则A必须创建和销毁HogeDataManager,那么您需要在B和C中使用unset_mgr()。