2013-02-21 29 views
1

假设你有一个应该从配置文件中读取程序设置的程序。你会用一个存储它们的单例类来实现它们吗,每个设置都有一个静态属性的类,一个名称空间内的全局变量?或者更好的东西?在实现程序的配置设置时,什么是一个好方法?

在我的情况下,我使用全局变量在名称空间中实现它们,尽管我已经被教导从不使用全局变量来处理任何事情,因为我已经读过Singleton模式现在被认为比他们更糟。

+1

如何将设置传递给需要它们的东西? – 2013-02-21 14:44:08

+0

请参阅http://stackoverflow.com/q/137975/951890 – 2013-02-21 14:47:49

回答

3

我会在一个单独的类或模块(类似于boost.program_options)中实现它们,并通过依赖注入和参数值将它们传播到代码库的其余部分。

如果这些值不会改变,您可以将它们放入(或者)一个选项文件中或作为默认参数值并忘记它们。

这将允许以不同的默认值运行,而不会对代码库进行任何更改,并允许您在运行测试时使用不同的默认值/模拟数据。

0

我会使用一个单例返回某种容器,其中包含我需要配置我的程序的所有属性。国际海事组织,只要单身人士没有内部国家,这影响了辛格尔顿成员的呼吁,使用该模式没有问题。对于无状态,我的意思是对一个单身成员的调用应该总是产生相同的结果,并给定一组参数,不管是什么。这样可以保证在程序中不同位置的两个调用不会以不同的方式影响程序。

相关问题