如何在c ++中的几个类之间共享实例,而不是使用Singleton模式

时间:2016-05-18 09:10:51

标签: c++ design-patterns singleton

现在我正在开发一个c ++应用程序,而且我面临共享实例的问题。

对于这个问题,我创建了一个简单的类图。我想为A和C类共享HogeDataManager .A创建HogeDataManager并通过其公共方法读取HogeData。 B将一些数据添加到HogeDataManager。

为了共享HogeDataManager,我必须为B和C准备set_mgr方法。但我认为这不是一个聪明的方法。当然,如果我采用Singleton模式,它将被解决。但是辛格尔顿有时很危险,所以我想找到更好的方法来避免这样的问题。

enter image description here

1 个答案:

答案 0 :(得分:0)

你的设计很好: A创建HogeDataManager,并将其转移到B,B转到C. 只是遗漏了对象A,B或C有责任的决定,最终破坏HogeDataManager。 如果你想要,A必须创建和破坏HogeDataManager,那么你需要在B和C中使用unset_mgr()。