1

假设您有一个程序应该从配置文件中读取程序的设置。您是否会使用存储它们的单例类、每个设置具有静态属性的类或命名空间内的全局变量来实现它们?或者可能有更好的东西?

在我的例子中,我在命名空间中使用全局变量来实现它们,尽管我被教导永远不要将全局变量用于任何事情,因为我已经读过单例模式现在被认为比它们更糟糕。

4

2 回答 2

3

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

在这些值不变的情况下,您可以将它们放在(或者)一个选项文件中或作为默认参数值而忘记它们。

这将允许在不更改代码库的情况下以不同的默认值运行,并允许您在运行测试时使用不同的默认值/模拟数据。

于 2013-02-21T14:46:57.587 回答
0

I would use a singleton that returns some sort of container containing all the attributes i need to configure my program. IMO as long as the singleton has not internal states, that influence the call of singelton member, theres no problem in using the pattern. With stateless i mean that the a call to a singleton member should always produce the same result, with a given set of parameters, no matter what. This way one can guarentee that two calls at different locations in the program do not affect the programm in different ways.

于 2013-02-21T15:03:44.243 回答