在大型复杂的软件产品管理配置的设置成为一个重大的痛苦。 我已经看到了这个问题的两种方法是:
- 在系统中的每个组件从配置文件或注册表设置加载自己的配置。
- 有一个加载配置的系统设置的设置装载类,并让每个组件查询其设置的设置加载器。
这些方法都觉得我错了。
是否有可能被用来简化问题的任何设计模式? 也许东西会采取的依赖注射技术的优势。
在大型复杂的软件产品管理配置的设置成为一个重大的痛苦。 我已经看到了这个问题的两种方法是:
这些方法都觉得我错了。
是否有可能被用来简化问题的任何设计模式? 也许东西会采取的依赖注射技术的优势。
我喜欢创建用于设置查询,加载和保存的接口。 使用依赖注入,我可以注入到需要它的每个组件这一点。
这使得在更换配置策略方面的灵活性,并提供一切从工作中一个共同的基础。 我喜欢这一个单一的,全球性的“设置加载”(您的选项2),尤其是因为我可以覆盖配置机制单个组件,如果我绝对必须这样做。
目前,我在那里的配置是由保存地图配置键到值的一个全局singleton对象管理的系统上工作。 在一般情况下,我希望它有没有做这种方式,因为它可能会导致系统中的瓶颈,并发和它的草率进行单元测试,等等。
我认为里德·科普塞有它的右边(我投他起来),但我肯定会推荐阅读Martin Fowler的依赖注入伟大的文章:
http://martinfowler.com/articles/injection.html
轻微补遗太...如果你想要做的任何模拟对象类型的单元测试,依赖注入肯定是要走的路。
这个怎么样。 定义可配置有一个单独的方法配置(构型)的接口。 该配置参数是简单的,其配置参数的名称以及它们的值相关联的哈希表。
根对象可以创造任何他们想要的方式来实现配置散列表(例如:从配置文件读取它)。 该散列表可以包含用于根对象iselft配置参数,加上它的一个组件,子组件,子子部件(等)可能使用的任何参数。
根对象然后调用它的所有可配置部件的配置(构型)。