在C ++中创建Environment对象的最佳方法

时间:2009-10-12 13:23:14

标签: c++ environment

我想创建一个可以从我的程序中的所有类访问的环境类,但我不想每次想要从其他类访问其成员时初始化环境对象。在C ++中使用它的最佳方法是什么?

我想这样做,因为我有环境对象存储其他类可能使用的所有配置值。从多个位置读取这些值,包括不同的文件。我不想在每次在类中创建新的环境对象时解析文件。

5 个答案:

答案 0 :(得分:4)

Singleton对象并不总是解决方案。虽然有时它似乎是一个简单的解决方案,但它确实有一些缺点(例如,见this question)。

您的课程中有多少实际需要访问此Environment对象?如果你的字面意思是你所做的每一堂课,那么听起来你的设计是有缺陷的。

通常,单身人士的更好选择就是将对象传递给真正需要它的人。

答案 1 :(得分:0)

您需要做的是将您的环境类包装在Singleton模式中。有关详细信息,请参阅此SO问题:C++ Singleton design Pattern

答案 2 :(得分:0)

正如已经指出的那样,你要找的是Singleton模式。然而,Singleton模式通常是设计不良的结果。每当您发现自己使用Singleton模式,或者就此而言,任何需要实际上是全局变量的模式时,您应该考虑是否可能有更好的方法来解决问题。关于您的特定问题,我建议您查看QSettings类,它是Qt Framework的一部分,是免费的高质量开源库。

QSetttings类允许您使用首选本机机制(Windows上的注册表,Mac OS X上的属性列表文件和Linux上的gconf XML文件)加载/保存配置设置。此外,您可能希望查看我的帖子Environment Variables are Evil,以防您考虑使用环境变量进行配置(配置名称“环境”听起来非常不祥)。

答案 3 :(得分:-1)

听起来你想要一个单身人士模式。这将允许您创建和使用类的一个对象/实例,但不会更多,即使您多次访问它。参见:

http://www.infernodevelopment.com/singleton-c

答案 4 :(得分:-1)

您可以创建一个静态singleton的服务。此服务包含所有对象集合,并提供访问这些对象的函数。