确定性初始化和依赖注入(基于构造函数)

时间:2010-06-19 19:57:01

标签: language-agnostic dependency-injection deterministic

我正在处理的演示应用程序有很长的启动例程。我试图用新想法取代的应用程序在控制台中记录了很多(想象一下:“现在正在加载数据......网状样条......登录到第三方服务......”)。

在花了一整天从头开始学习DI后,我现在只需调用一个容器即可创建整个(!)对象图。谢谢大家,顺便提一下,提供了很多想法和惊人的答案。这个社区摇滚。

但是现在,我想做的是再次确定初始化,所以我可以登录我的工作流程(我正在使用Workflow Foundation 4.0,因为我喜欢声明式的风格以及我可以在图形中显示人的事实当我加载数据,网格化样条以及所有这些时,会发生什么。

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

原因是我想在工作流活动中显式调用long初始化方法。在编辑器中看起来很神奇,当我提出这个问题时我的老板会非常高兴(他没有要求它,我的想法是周末做一些事情,我认为这很有趣)。

1 个答案:

答案 0 :(得分:0)

我假设您正在创建自己的DI框架,以获得乐趣和学习,对吧?否则只需使用现有的。

没有:)你不应该有任何静态的东西。你的算法可能看起来像这样:

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

或者只看看Spring是如何构建的 - 这是一个很好的编写DI框架的例子