【发布时间】:2014-01-17 18:10:02
【问题描述】:
我一直想知道是否有人在任何非玩具项目中使用 DI/IoC,他可以在其中选择实现风格(而不是由库或开发要求强制执行)。
毕竟,如果我们想要一个类的单个实例,工厂只是完美的机制,而如果我们想要一个特定的实例,目录服务是完美的机制。
那么添加 Spring/Guice/etc 有什么大不了的。进入这个并为我们自己创造另一个依赖? (或者也许我完全无法理解他们的 DI 方法......)
谢谢。
【问题讨论】:
-
DI 还将帮助您进行生命周期管理,并让您更接近声明您的依赖项,而不是手动获取它们。也就是说,如果您对它们更满意,我看不出您描述的模式有什么问题。
-
可测试性是 DI 的主要优势:您可以在单元测试中注入模拟依赖项。我想说的是,现在几乎所有非玩具 Java 项目都使用 DI:Spring 推广 DI,带有 CDI 的 Java EE 推广 DI。阅读code.google.com/p/google-guice/wiki/Motivation?tm=6 了解 DI 的动机。
标签: spring design-patterns dependency-injection inversion-of-control guice