我正在开发可用于Android,Web和桌面应用程序的Java库。该库由几个主要分离的模块组成,这些模块共享相同的配置设置(例如'enabled','api key')。如何管理Java库的内部配置设置?
的配置应该允许在运行时(如API,JMX或SharedPreferemes在Android设备)变化不影响便携性(例如,没有数据库),可测试性或线程安全的(有些模块的目标在单独的线程中运行)。
方法
我目前使用什么是配置对象我在启动时创建并传递到各个模块(其本身把它传递给子类)。然后每个类将它需要的字段复制到本地字段 - 唯一的问题是:设置无法在运行时更改。
其他的想法:利用
- 静态:很难测试
- 传递引用到模块:线程安全的?
这里最好的解决方案/最佳实践是什么?
UPDATE:只要是明确的,一个模块并不需要知道,如果更改了的配置,但是应当简单地直接使用该字段的新值,并从此与它的工作。
我又有自己的想法:通过包裹每个配置领域的ConfigItem我可以创建一个AndroidConfigItem 一个包装分别获得()检查是否SharedPreferences已经改变想法吗? –
stephanos
我想了一下,看看ehcache的源代码,看看他们是如何做到的,并得出结论认为Óscar的概念(观察者模式)对我来说是最好的方法 – stephanos