文章目录
1.依赖注入
1.1.什么是依赖?
如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。
例如下面类 A 中用到一个 B 对象,我们就说类 A 对类 B 有一个依赖。
同时,这也是一个典型的"依赖非注入"案例。
public class A {
...
B b;
...
public A() {
b = new B();
}
}
1.2.什么是依赖注入?
依赖注入就是给一个对象传入一个实例变量。
比如:
public class A {
...
B b;
...
public A(B b) {
this.b = b;
}
}
这是一个通过构造函数传参进行注入,在A类里边不再有new B()的操作,所以A不再依赖B,还有通过方法进行注入,比如常见的setXXX(B b)。
这种就是最简单的依赖注入。
更详细请参考:http://blog.51cto.com/cnn237111/928690
1.3.为什么要用依赖注入?
项目中,经常需要在一个对象里去创建另一个对象的实例,这种行为是产生耦合的常见形式,对于一个大型项目来说,过多的相互依赖会导致代码难以维护,如何难以维护?比如A的构造内new了一个B,B的构造变了,那么我们就要去A的构造内修改构建B的代码,这样,地方一多,工作量就会很大。
我们可以通过上面的方式进行依赖注入,但是难免显得简陋,那么在这里可以引出本文要学习的主题—Dagger。
2.Dagger
2.1.什么是Dagger?
在了解了依赖注入之后,再来看Dagger,它