哪些设计模式可以应用于配置设置问题?

pax*_*977 71 configuration design-patterns configuration-files application-settings

在大型复杂的软件产品中,管理可配置设置成为一个主要的痛苦.我见过这个问题的两种方法是:

  • 让系统中的每个组件从配置文件或注册表设置加载自己的配置.
  • 有一个设置加载器类,它加载所有可配置的系统设置,让每个组件查询设置加载器的设置.

这些方法对我来说都是错的.

是否有可用于简化问题的设计模式?也许会利用依赖注入技术的东西.

Ree*_*sey 43

我更喜欢创建一个用于设置查询,加载和保存的界面.通过使用依赖注入,我可以将其注入到需要它的每个组件中.

这样可以在替换配置策略方面提供灵活性,并为所有工作提供共同基础.我更喜欢这个单一的全局"设置加载器"(你的选项2),特别是因为我可以覆盖单个组件的配置机制,如果我绝对需要这样做的话.

  • 你好,如果你分享一些样本会很好:) (3认同)

Bre*_*ode 18

我目前正在使用一个系统,其中配置由一个全局单例对象管理,该对象将配置键映射到值.一般来说,我希望它没有这样做,因为它可能导致系统中的并发瓶颈,并且它对于单元测试等很邋..

我认为Reed Copsey有权利(我投票给他),但我肯定会建议阅读Martin Fowler关于依赖注入的伟大文章:

http://martinfowler.com/articles/injection.html

还有一个小小的附录......如果你想做任何模拟对象类型的单元测试,依赖注入肯定是要走的路.


Ala*_*ets 5

这个怎么样。您可以使用单个方法 configure(configuration) 定义接口 Configurable。配置参数只是一个哈希表,它将配置参数的名称与其值相关联。

根对象可以以他们想要的任何方式创建配置哈希表(例如:从配置文件中读取它)。该哈希表可能包含根对象 iselft 的配置参数,以及其组件、子组件、子子组件(等)之一可能使用的任何参数。

然后根对象在其所有可配置组件上调用 configure(configuration)。