在大型和复杂的软件产品中,管理可配置设置成为一个主要问题。我见过解决该问题的两种方法:
- 让系统中的每个组件从配置文件或注册表设置中加载自己的配置。
- 有一个设置加载器类来加载所有可配置的系统设置,并让每个组件查询设置加载器以获取其设置。
这些方法都让我感觉不对劲。
是否有任何设计模式可用于简化该问题? 或许可以利用依赖注入技术的某些东西。
在大型和复杂的软件产品中,管理可配置设置成为一个主要问题。我见过解决该问题的两种方法:
这些方法都让我感觉不对劲。
是否有任何设计模式可用于简化该问题? 或许可以利用依赖注入技术的某些东西。
我倾向于创建一个界面来设置查询、加载和保存。通过使用依赖注入,我可以将其注入到每个需要它的组件中。
这样做可以在替换配置策略方面提供灵活性,并为一切工作提供一个共同的基础。我更喜欢这种方法而不是使用单个全局“设置加载器”(选项2),尤其是因为如果必须这样做,我可以覆盖单个组件的配置机制。
这样如何。您可以定义一个名为 Configurable 的接口,其中包含一个 configure(configuration) 方法。configuration 参数只是一个哈希表,它将配置参数的名称与其值相关联。
根对象可以以任何他们想要的方式创建配置哈希表(例如:从配置文件中读取)。该哈希表可能包含根对象自身的配置参数,以及其组件、子组件、子子组件(等等)中可能使用的任何参数。
然后,根对象对其所有可配置组件调用 configure(configuration) 方法。
你可以创建多个实现配置加载器接口的实现。基本上是“策略模式”,你可以定义一个基本的configLoader接口,然后进一步定义不同的实现,例如FileSystemLoader、ClasspathLoader、EnvVariablesLoader等。 有关详细信息,请参阅链接。