现在我正在开发一个c ++应用程序,而且我面临共享实例的问题。
对于这个问题,我创建了一个简单的类图。我想为A和C类共享HogeDataManager .A创建HogeDataManager并通过其公共方法读取HogeData。 B将一些数据添加到HogeDataManager。
为了共享HogeDataManager,我必须为B和C准备set_mgr方法。但我认为这不是一个聪明的方法。当然,如果我采用Singleton模式,它将被解决。但是辛格尔顿有时很危险,所以我想找到更好的方法来避免这样的问题。
答案 0 :(得分:0)
你的设计很好: A创建HogeDataManager,并将其转移到B,B转到C. 只是遗漏了对象A,B或C有责任的决定,最终破坏HogeDataManager。 如果你想要,A必须创建和破坏HogeDataManager,那么你需要在B和C中使用unset_mgr()。