如何管理Java库的内部配置设置?
我正在开发一个Java库,可以在Android、Web和桌面应用程序中使用。该库由几个主要分离的模块组成,这些模块共享公共配置设置(例如“已启用”、“api密钥”) 目标 配置应允许在运行时进行更改(例如Android中的API、JMX或SharedPreferems),而不影响可移植性(例如无数据库)、可测试性或线程安全性(某些模块在单独的线程中运行) 方法 我当前使用的是我在启动时创建的配置对象,并将其传递给各个模块(模块本身将其传递给子类)。然后,每个类将其所需的字段复制到本地字段-唯一的问题是:无法在运行时更改设置 其他想法:如何管理Java库的内部配置设置?,java,configuration,Java,Configuration,我正在开发一个Java库,可以在Android、Web和桌面应用程序中使用。该库由几个主要分离的模块组成,这些模块共享公共配置设置(例如“已启用”、“api密钥”) 目标 配置应允许在运行时进行更改(例如Android中的API、JMX或SharedPreferems),而不影响可移植性(例如无数据库)、可测试性或线程安全性(某些模块在单独的线程中运行) 方法 我当前使用的是我在启动时创建的配置对象,并将其传递给各个模块(模块本身将其传递给子类)。然后,每个类将其所需的字段复制到本地字段-唯一的
- 使用静态:难以测试
- 向模块传递引用:线程安全
更新:需要澄清的是,模块不需要知道是否对配置进行了更改,只需直接使用字段的新值,然后再使用它即可。一些建议:
- 不要将每个类需要的字段复制到本地字段;始终从配置对象访问属性(应在配置对象上执行任何缓存管理)
- 确保使用config对象的任何类都不会以任何方式(通过插入、删除键或更改其值)直接修改它
- 在实例化时预加载配置对象中所需的所有信息
- 将配置对象设置为单例,并在所需的客户端之间共享它
- 为配置对象提供一种机制,以逐出任何不再有效的缓存项
- 使用Observer模式使缓存保持最新
- 不要将每个类需要的字段复制到本地字段;始终从配置对象访问属性(应在配置对象上执行任何缓存管理)
- 确保使用config对象的任何类都不会以任何方式(通过插入、删除键或更改其值)直接修改它
- 在实例化时预加载配置对象中所需的所有信息
- 将配置对象设置为单例,并在所需的客户端之间共享它
- 为配置对象提供一种机制,以逐出任何不再有效的缓存项
- 使用Observer模式使缓存保持最新
- 一些建议: