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

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

  •  2
  • StormianRootSolver  · 技术社区  · 16 年前

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

    在花了一整天的时间从零开始学习DI之后,我创建了整个(!)对象图现在只需调用容器。谢谢大家,顺便说一句,你们提供了这么多的想法和惊人的答案。这个社区很受欢迎。

    但现在,我想做的是再次使初始化具有确定性,这样我就可以登录我的工作流(我使用的是workflow Foundation 4.0,因为我喜欢声明式样式,并且我可以在图形中显示人们所发生的事情)当我加载数据、网格样条线和所有这些内容时。

    你认为拥有一个“StartupManager”类是一个可接受的实践吗(在我的体系结构中,现在唯一的一个类,我杀死了所有其他的“实例获取者”!)它将对它注入的对象调用二次初始化方法(这里我使用了build()和基于属性的DI)?

    原因是我想显式地调用工作流活动中的长初始化方法。在编辑看来很棒,我的老板会很高兴当我展示这个(他没有要求,这是我的主意花周末做一些事情,我也认为这是很多乐趣)。

    1 回复  |  直到 16 年前
        1
  •  0
  •   piotrek    12 年前

    我想你是为了好玩和学习而创建自己的DI框架,对吧?否则只需使用现有的。

    不:)你不应该有任何静电。你的算法可能是这样的:

    • 创建DI生成器的实例
    • 为该实例提供依赖项定义(从文件或编程方式)
    • 调用配置的生成器上的构建。此方法应返回上下文的实例
    • 在您调用give-me-object-x的上下文中,您应该得到一个包含所有依赖项的object-x

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

    推荐文章