问题是老帽子——在我们的系统中支持配置文件或系统配置的正确设计是什么?我已经确定了以下要求:
- 应该能够实时重新加载并立即获取更改而无需重新部署
- 对于依赖相同的软件应用程序,例如 SQL 或 memcached 凭证,应该可以在一个孤立的地方引入更改并一举部署,即使应用程序位于不同位置的不同机器上
- 支持运行相同应用程序的许多进程/机器
我正在努力解决的这个设计的部分:
- 每个主要类都应该将自己的“Config”类作为构造函数的输入参数吗?是否应该有一个工厂负责实例化正确的配置?还是每个类都应该从自己的配置中读取并自动重新加载?
- 如果类 B 派生自类 A,或者围绕它进行组合,那么继承 Config 文件是否有意义?
- 假设类 A 由 M1 和 M2(M 代表“main”)构建,M1 负责实例化资源。假设资源依赖于我希望在 M1 和 M2 之间通用的 MySQL 凭据,有没有办法避免打破所有权的权衡并放入 A 的配置 v. 跨 M1 和 M2 的配置复制资源?
这些是我现在正在处理的设计问题,并不真正了解在这里工作的设计模式或框架。我在 Java 中,所以任何解决这个问题的库都非常受欢迎。