【发布时间】:2015-01-20 17:01:46
【问题描述】:
场景:应用程序有一个可以启用一些优化的算法。默认情况下,有些是打开的,有些是关闭的。有没有一种方便的方法可以在 Java 中实现某种全局属性系统?
要求:
- 必须很容易两个使用不同设置运行程序的多个实例
- 可从每个类访问(尽可能不传递任何对象)
- 可通过命令行参数设置,例如-DenableOptimizationX
- “标准”方式/用户易于理解
替代方案:
-
built-in global properties,例如
-DenableOptimizationX=true和System.getProperty("foo.bar.enableOptimizationX") - built-in property files
-
environment variables
System.getenv("enableOptimizationX") - 带有静态变量的类
- 包含设置并通过设置文件/参数加载、加载的实例
- ... ?
这些(或其他)中的哪一个似乎是这种情况的最佳解决方案?
【问题讨论】:
-
它应该可以从任何地方访问的事实是,IMO,一个设计问题的标志。如果参数是针对特定算法的,为什么所有其他类都必须访问这些属性?
-
@JBNizet 我想要一种简单的方法来获取算法的属性。您对更好的设计有什么建议吗?对于这种场景,您将如何实现通用属性系统?
标签: java application-settings properties-file