管理依赖项

问题描述

| 如果您使用模拟来测试对象之间的交互,则必须通过构造函数或特定方法来传递协作者。在足够复杂的应用程序中,您将有很多小的对象彼此交互。您如何在应用程序的最高级别管理整个对象图的构造?简而言之,您如何处理以下问题:
// arbitrarily complex
A a = new A(new B(new C(new D(new ...)),new E(new ...)),new F(new G(new ...)));
a.doSomething();
在这种情况下,依赖注入容器似乎是最好的解决方案。还有其他简化依赖管理的好策略吗?     

解决方法

        给出的示例只是穷人的DI。只要您将自己限制为在应用程序的“合成根”(入口点)中组成整个对象图,就可以了。 (顺便说一句,最近,我听说Dan North称其为'new'是新的'new'-暗示Java社区中的人们开始转向使用这种构造对象图的方式,而不是使用容器)。 但是,只要遵循“注册解析发布”模式,您当然也可以使用DI容器。特别是在基于请求的应用程序(Web应用程序和服务)中,使用Poor Man's DI管理生命周期可能会很复杂,因此在这些类型的应用程序中,容器可能会非常有帮助。     ,        据我所知,保持所有这些依赖关系受控的唯一方法是创建一个可以传递的通用Context对象(即使它具有复杂性),或者将IoC与构造函数注入一起使用。 特别是在您给出的示例中,CI是一个很好的解决方案,因为您可以通过简单地配置容器来管理复杂性。 只是我的2美分...     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...