如何使用与Singleton一样的类的许多对象?

时间:2015-04-12 17:44:40

标签: c++ qt singleton

最近我开发了一个C ++ / Qt的记录器类,它被实现为Singleton,因为每个使用该类的应用程序应该只有一个实例,最重要的是,我不想在任何地方复制指针。不会用很多extern污染我的代码。

但是当我开始在一个项目中使用它时出现了一个问题,该项目拥有自己的日志,使用的库也有自己的日志。我虽然一切都会正常工作(毕竟软件不是正在使用的库),但我错了:实际上只为应用程序和使用过的库创建了一个日志系统实例。

现在我面对这种情况,经过多次,我无法绕过:我不想像通常使用的那样使用那个类,声明一个对象并开始传递它随处于extern,而是像在Singleton中一样操作:只需#include头并开始通过全局instance()函数调用方法。如果不在该记录器类中使用Singleton,我该怎么做?

我想到的一种方法是在每个项目(lib和主应用程序)上创建一个不同的Singleton类,只需要记录器类的对象,但我有兴趣听取其他替代方案。

1 个答案:

答案 0 :(得分:0)

为每个日志实例分配句柄并按实例获取日志。在库中添加为库返回句柄的函数,在应用程序中添加返回应用程序日志句柄的函数。并且不要忘记,对于使用设计模式而言,monlton是很难的,避免使用它们。