在管理可配置设置的大型复杂软件产品中,成为一大难题。我见过的两种方法是:哪些设计模式可以应用于配置设置问题?
- 让系统中的每个组件都从配置文件或注册表设置加载自己的配置。
- 有一个设置加载器类,用于加载所有可配置的系统设置,并让每个组件查询设置加载程序的设置。
这些方法对我来说都感觉不对。
是否有任何可用于简化问题的设计模式?也许会利用依赖注入技术。
在管理可配置设置的大型复杂软件产品中,成为一大难题。我见过的两种方法是:哪些设计模式可以应用于配置设置问题?
这些方法对我来说都感觉不对。
是否有任何可用于简化问题的设计模式?也许会利用依赖注入技术。
我更喜欢创建一个接口来设置查询,加载和保存。通过使用依赖注入,我可以将其注入每个需要它的组件。
这允许在替换配置策略方面具有灵活性,并为所有工作提供了一个通用基础。我更喜欢这个到一个单一的全局“设置加载器”(您的选项2),特别是因为我可以重写单个组件的配置机制,如果我绝对需要这样做的话。
你好,如果你分享一些样品,它会很好:) – issamux 2018-03-07 15:17:40
我目前工作的系统中,配置由一个全局单例对象管理,该对象将配置键映射到值。一般来说,我希望它没有这样做,因为它可能会导致系统中的并发瓶颈,并且对于单元测试等是sl 012不驯的。
我认为里德科普塞有权利(我投票给他) ,但我肯定会推荐阅读Martin Fowler的依赖注入大文章:
http://martinfowler.com/articles/injection.html
略有增编过...如果你想要做的任何模拟对象类型的单元测试,依赖注入肯定是办法走。
看来,装饰符合你的需求。你可以创建一个可以按照自己的方式使类可序列化的序列化装饰器。可以使用策略使所有对象都有序列化策略。那些不需要序列化的对象可以使用忽略策略。那些只需要序列化他们的字段OnlyFields策略等等。你可以灵活地向你的配置添加新的东西。当然,所有的方法都有它的优点和缺点。 – 2009-08-23 14:39:36
这个怎么样。您可以使用单个方法configure(configuration)定义一个可配置的接口。配置参数只是一个散列表,它将配置参数的名称与它们的值关联起来。
根对象可以以任何他们想要的方式(例如:从配置文件中读取它)来创建配置哈希表。这个散列表可能包含根对象iselft的配置参数,以及其组件,子组件,子子组件(etc)可能使用的任何参数。
根对象然后调用所有可配置组件上的配置(配置)。
为什么你认为选项2是错的? – ChaosPandion 2009-08-22 00:09:07
它通常作为单例实现,但有其他方法可以实现它。 – 2009-08-22 01:35:01