我正在尝试理解使用DI容器的一些代码...它是DI容器的一个非常基本的实现,它只维护带有接口和相应实现/实例的ConcurrentHashMap
。 / p>
此外,容器完全静止。
在应用程序初始化(使用每个HTTP请求调用)中,视图在Container中注册:
Container.register(IHomeView.class, new HomeView());
并注入演示者:
HomePresenter(new Model(), Container.resolve(IHomeView.class));
我真的没有看到容器的好处是什么。是否可以只实例化一个新的HomeView
并通过构造函数注入将其传递给Presenter?
答案 0 :(得分:1)
我可以想到使用该容器的两个实际应用程序。
如果一个不同的项目团队正在使用HomeView类,并且还没有准备就绪,那么编写HomePresenter的项目团队和调用它的代码可以通过更改容器注册来替换模拟HomeView类。 / p>
如果您希望隔离并单元测试排除HomeView类的代码段(例如,如果您想模拟HomeView类),那么您将在设置测试时更改容器注册。