转载

从零开始的Android新项目4 - Dagger2篇

Dagger - 匕首,顾名思义,比ButterKnife这把黄油刀锋利得多。Square为什么这么有自信地给它取了这个名字,Google又为什么会拿去做了Dagger2呢?希望本文能讲清楚为什么要用Dagger2,又如何用好Dagger2。

本文会从Dagger2的起源开始,途径其初衷、使用场景、依赖图,最后介绍一下我在项目中的具体应用和心得体会。

Origin

Dagger2 ,起源于Square的 Dagger ,是一个完全在编译期间进行的依赖注入框架,完全去除了反射。

关于Dagger2的最初想法,来自于2013年12月的 Proposal: Dagger 2.0 ,Jake大神在issue里面也有回复哦,而idea的来源者 Gregory Kick 的GitHub个人主页也没多少follower,自己也没几个项目,主要都在贡献其他的repository,可见海外重复造轮子的风气比我们这儿好多了。

扯远了,Dagger2的诞生就是源于开发者们对Dagger1半静态化半运行时的不满(尤其是在服务端的大型应用上),想要改造成完整的图生成,完全生成代码的依赖注入解决方案。在消除什么对Android更适合以及对大型应用来说什么更有意义(往往有可怕数量的绑定)两者之间的隔阂后,Dagger2诞生了。

初衷

Dagger2的初衷就是装逼,啊,不对,是可以让你少些很多公式化代码,并通过依赖注入达到更容易测试,降低耦合,创建可复用可互换的模块。你可以在Debug包,测试运行包以及release包优雅注入三种不同的实现。

…未完待续

原文  http://blog.zhaiyifan.cn/2016/03/27/android-new-project-from-0-p4/
正文到此结束
Loading...