【问题标题】:Deterministic initialization and dependency injection (constructor based)确定性初始化和依赖注入(基于构造函数)
【发布时间】:2011-03-05 20:33:45
【问题描述】:

我正在开发的演示应用程序的启动例程很长。在此期间,我试图用新想法替换的应用程序大量记录到控制台(想象一下:“现在正在加载数据......网状样条......登录到第三方服务......”)。

在基本上从头开始学习 DI 之后,我现在只需调用容器即可创建整个(!)对象图。顺便说一句,谢谢大家在这里提供这么多的想法和惊人的答案。这个社区很震撼。

但现在,我想做的是再次使初始化确定性,这样我就可以登录我的工作流程(我使用的是 Workflow Foundation 4.0,因为我喜欢声明式风格以及我可以在图形中向人们展示的事实会发生什么)当我加载数据、网状样条曲线等等。

您是否认为拥有一个“StartupManager”- 类(现在我的架构中唯一的单例,我杀死了所有其他“实例获取器”!)将在它获得的对象上调用辅助初始化方法是一种可接受的做法注入(我在这里使用了 buildUp() 和基于属性的 DI)?

原因是我想在我的工作流活动中显式调用长初始化方法。在编辑器中看起来很棒,当我呈现时我的老板会很高兴(他没有要求,这是我的想法度过周末做点事情,我觉得这很有趣)。

【问题讨论】:

    标签: language-agnostic dependency-injection deterministic


    【解决方案1】:

    我假设您正在创建自己的 DI 框架来娱乐和学习,对吧?否则就使用现有的。

    no :) 你不应该有任何静态的东西。您的算法可能如下所示:

    • 创建 DI 构建器的实例
    • 为该实例提供依赖项定义(来自文件或以编程方式)
    • 在已配置的构建器上调用您的 buildUp。这个方法应该返回一个上下文实例
    • 在您调用 give_me_object_x 的上下文中,您应该得到一个充满所有依赖项的对象 x

    或者看看 spring 是如何构建的——它是编写良好的 DI 框架的一个很好的例子

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多