代码之家  ›  专栏  ›  技术社区  ›  oz10

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

  •  63
  • oz10  · 技术社区  · 15 年前

    在大型和复杂的软件产品中,管理可配置设置成为一大难题。我看到的解决问题的两种方法是:

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

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

    有没有可以用来简化问题的设计模式? 也许可以利用依赖注入技术。

    3 回复  |  直到 12 年前
        1
  •  38
  •   Reed Copsey    15 年前

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

    这就允许在替换配置策略方面具有灵活性,并为所有工作提供了一个通用的基础。我更喜欢使用单一的全局“设置加载器”(您的选项2),特别是当我绝对需要这样做时,我可以覆盖单个组件的配置机制。

        2
  •  18
  •   Brent Writes Code    15 年前

    我目前在一个系统中工作,在这个系统中,配置由一个全局的singleton对象管理,该对象保持配置键到值的映射。总的来说,我希望它不是这样做的,因为它可能会导致系统中的并发性瓶颈,并且对于单元测试来说是草率的,等等。

    我认为Reed Copsey有权这样做(我投票支持他),但我绝对建议阅读Martin Fowler关于依赖注入的伟大文章:

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

    还有一个小小的补充…如果你想做任何模拟对象类型的单元测试,依赖注入绝对是一种方法。

        3
  •  4
  •   Alain Désilets    12 年前

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

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

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

    推荐文章