依赖注入思路以及如何选择(Dagger、RoboGuice和ButterKnife)

在开发程序的时候,会用到各种对象,很多对象在使用之前都需要进行初始化。例如你要操作一个SharedPreference,你需要调用getSharedPreferences(String name,int mode)来获取一个对象,然后才能使用它。而如果这个对象会在多个Activity中被使用,你就需要在每个使用的场景中都写下同样的代码。这不仅麻烦,而且增加了出错的可能。依赖注入让你不需要初始化对象。换句话说,任何对象声明完了就能直接用。

当涉及到Android上的依赖注入(DI.dependency injection)类库的时候,存在不少的选择,但怎么知道哪一个最适合你呢?下面将针对目前比较流行的三种依赖注入框架(Dagger、RoboGuice和ButterKnife)做进一步的对比和分析。

Dagger

dagger是使用依赖注入的方式,使用Annotation给需要注入的对象做标记,通过inject()方法自动注入所有对象,从而完成自动的初始化。
dagger特别适合用在低端设备上,因为它没有采取反射而使用了预编译技术,因为基于反射的DI非常占用资源和耗时。Dagger或许不是最理想的依赖注入框架,但它可能是最高效的。

Dagger源码解析
另外还有针对注解方式的具体实现方式分析
Java Annotation

RoboGuice

待续。。。

ButterKnife

待续。。。

由于后面对注入思想的热衷程度的下降,此文章暂时不做更新。。。