依赖项注入-管理依赖项



如果使用mock测试对象交互,则必须通过构造函数或特定方法传递协作者。在一个足够复杂的应用程序中,会有很多小对象相互交互。如何在应用程序的最高级别管理整个对象图的构建?简而言之,您如何处理以下问题:

// arbitrarily complex
A a = new A(new B(new C(new D(new ...)), new E(new ...)), new F(new G(new ...)));
a.doSomething();

在这种情况下,依赖注入容器似乎是最好的解决方案。有没有其他好的策略来简化依赖关系管理?

给出的例子只是穷人的DI。只要你约束自己在应用程序的CompositionRoot(入口点)中组成整个对象图,你就可以做得很好。(顺便说一句,我最近听到Dan North将其称为"new"是新的"new",暗指Java社区中的人们开始回归这种构建对象图的方式,而不是使用容器)。

但是,只要遵循注册-解析-发布模式,就可以使用DI容器。特别是在基于请求的应用程序(web应用程序和服务)中,Poor Man的DI管理生命周期可能很复杂,因此在这些类型的应用程序中,容器可能非常有用。

据我所知,控制所有这些依赖关系的唯一方法是创建一个可以传递的通用上下文对象(但即使这样也有其复杂性),或者将IoC与构造函数注入一起使用。

特别是在您给出的示例中,CI是一个很好的解决方案,因为您可以简单地通过配置容器来管理复杂性。

只有我的2美分。。。

相关内容

  • 没有找到相关文章

最新更新