DI容器 - 无法真正看到好处

时间:2015-06-01 14:06:42

标签: dependency-injection

我正在尝试理解使用DI容器的一些代码...它是DI容器的一个非常基本的实现,它只维护带有接口和相应实现/实例的ConcurrentHashMap。 / p>

此外,容器完全静止。

在应用程序初始化(使用每个HTTP请求调用)中,视图在Container中注册:

Container.register(IHomeView.class, new HomeView());

并注入演示者:

HomePresenter(new Model(), Container.resolve(IHomeView.class));

我真的没有看到容器的好处是什么。是否可以只实例化一个新的HomeView并通过构造函数注入将其传递给Presenter?

1 个答案:

答案 0 :(得分:1)

我可以想到使用该容器的两个实际应用程序。

  1. 项目并行
  2. 如果一个不同的项目团队正在使用HomeView类,并且还没有准备就绪,那么编写HomePresenter的项目团队和调用它的代码可以通过更改容器注册来替换模拟HomeView类。 / p>

    1. 单元测试
    2. 如果您希望隔离并单元测试排除HomeView类的代码段(例如,如果您想模拟HomeView类),那么您将在设置测试时更改容器注册。