本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is dependency injection?
Spring是概念依赖注入的框架。
DI的目的是什么?它是如何受益的?如何实施?
代码中DI最简单、最清晰的解释:codeflex.co/java-dependency-injection-simple-example
从这里开始。
另请参见A-初学者指南-依赖注入。(陈旧)
其他方面:
什么是依赖注入
依赖注入与工厂模式
何时使用依赖注入
依赖注入与控制反转的区别
基本上,不是让您的对象创建依赖关系,或者让工厂对象为它们创建依赖关系,而是将所需的依赖关系传递给构造函数或通过属性设置器,然后使其成为其他人的问题(依赖关系图上的对象,或者构建依赖关系图的依赖关系注入器)。我在这里使用的依赖项是当前对象需要保存引用的任何其他对象。
我第一次阅读依赖注入时发现的另一个非常有用的链接:objc.io/issues/11-android/dependency-injection-in-java
What is the purpose of DI?
依赖注入的目的是减少应用程序中的耦合,使其更加灵活和易于测试。
How does it benefit?
对象没有硬编码依赖项。如果需要更改依赖项的实现,您所要做的就是注入一个不同类型的对象。
How does it implemented?
依赖注入有多种方法。看看维基百科的文章,看看每一篇文章的例子。一旦理解了这些,就可以开始研究各种依赖注入框架。
嗨,你能告诉我:当一门课依赖于另一门课时,为什么很难考试?读了很多关于这个的文章,我还是不明白为什么,比如说,A类使用new来声明B类会使测试变得困难。非常感谢。
@Unwilig-测试类A将很困难,因为您没有办法为测试指定B的行为。记住,您只想测试您的代码……而不是您的代码所依赖的所有代码。
很短,
DI的目的是什么?通过依赖注入,对象本身不定义它们的依赖关系,依赖关系根据需要注入它们。
它是如何受益的?对象不需要知道在哪里以及如何获取它们的依赖关系,这会导致对象之间的松散耦合,这使得它们更容易测试。
如何实施?通常,容器基于配置文件或注释管理对象及其依赖项的生命周期。
嗨,你能告诉我:当一门课依赖于另一门课时,为什么很难考试?我读了很多关于这个的文章,但我还是不明白为什么A类使用new来声明B类会使测试变得困难。非常感谢。
@在youtube.com/watch上看?V= HBVJBZAAGFS
试试看:http://martinfowler.com/articles/injection.html
DI允许我们交换组件,提高可测试性,并确保组件松散耦合。DI允许在运行时使用DI容器(如windsor castle、unity、spring.net、mef)解析依赖项,这使得应用程序可以扩展。
http://en.wikipedia.org/wiki/dependency_注入