1
4
因为配置/设置通常加载一次(在启动时;或者在程序运行时加载几次)。无论如何,我们不是在谈论一个非常频繁/耗时的过程),我更喜欢简单而不是高效。 这排除了选项号(3)。配置加载将分散在各地。 我不完全确定你名单中(1)和(2)的区别。(1)是指“传递谨慎的参数”还是(2)是指“传递包含整个配置的对象”?如果是这样,我宁愿(2)而不是(1)。 这里的经验法则是你应该保持简单和集中。在一个地方读取配置的好处是,在配置源在某一点发生更改时,它可以提供更好的控制。 |
2
9
有人应该站出来支持所谓的Java标准
Preferences API
…这是最近在
JDK6
.
编辑添加
,因为作者似乎了解XML,所以
appropriate than before
. 我认为您可以使用XML JUJU
与SO有关: Preferences API vs. Apache solution , Is a master preferences class a good idea? (好吧,这就是我所愿意做的一切。) |
3
7
使用settingsManager类或类似的类来抽象获取所有设置数据。在代码中需要设置的每一点上,您都会查询settingsManager类-类似于:
然后,为如何将设置提取到此单个管理器类委托所有逻辑,您可以根据需要更改/优化这些管理器类的实现。例如,您可以实现settingsManager从配置文件、数据库或其他一些数据存储中获取设置,定期刷新设置,处理检索成本高昂的设置的缓存等。使用这些设置的代码仍然幸福地不知道所有这些实现决策。 为了获得最大的灵活性,您可以使用接口而不是实际的类,并让不同的设置管理器实现接口:您可以根据需要在某个中心点交换它们,而不必更改底层代码。 在.NET中,有一组相当丰富的现有配置类(在system.configuration中)命名空间提供了这类东西,并且效果非常好。 我不确定Java等价物,但它是一个很好的模式。 |
4
3
Here is a tutorial on the Properties class . 来自javadocs( Properties ):
本教程给出了以下典型用法的示例实例化:
当然,您也可以使用基于文件的存储和XML或YAML解析器,相当直接地滚动您自己的系统。祝你好运! |
5
1
我们最近开始使用JSR-330依赖项注入(使用SVN中的guice),发现可以读取属性文件(或任何其他映射)并在启动代码中的模块guice中绑定它,以便
当调用特定代码时,字符串被注入与键对应的值。这是我见过的解决这个问题的最优雅的方式! 您不必在代码周围拖拽配置对象,也不必在代码的每一个角落都洒上各种神奇的方法调用来获取值——您只需提到您需要它,它就在那里。 注意:我已经看过Guice、Weld(Seam-Based)和Spring,它们都提供了注入,因为我们希望JSR-330在我们自己的代码中,而且我目前最喜欢Guice。我认为原因是因为Guice在其绑定中是最清晰的,而不是与Weld一起发生在引擎盖下的魔法。 |
Schadre · C-plus编码错误 2 年前 |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
amirreza870 · Python OOP-更改类文本 2 年前 |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |