Android 四大天王之 Dagger (1)

Android 四大天王之 Dagger (1)_第1张图片

先回顾一下历史吧,dagger2 这把利器,确切地应该叫做 inject。每个分享依赖注入的专家都会拿出“煮咖啡”这个实例来打比方来讲解依赖注入。要煮咖啡就需要咖啡️,那么我们就先来谈一谈咖啡。

本人很爱喝咖啡,多半是为了 coding,以后有时间,测试一下边咖啡边 coding,到底能提高多少效率。端起咖啡杯思考,放下咖啡杯 coding。其实不是的就是为了提神。小时候考试前复习时,晚上总喜欢准备点花生米和茶水,觉得这样才像样。转眼那些画面无法再回放,所以每个人都需要珍惜现在的每一幅画面,珍惜身边的一切。遇到 bug ,受到怀疑的目光,不要理会,勇敢向前,不烦恼,不气馁做个真我。怎么样我的思维跳跃不,请跟紧。

我们今天分享的是,又一个 Android 开发必备库 Dagger。开始前还想啰嗦两句有关面向对象编程的事,个人喜欢函数式编程,可能仅仅因为他是花生米和茶水,这里有点抽象,不用理解,往下走。

其实所有 coding 都可以写在一起。不过也就没有可读性,和团队开发什么事了。面向对象本质是一种组织代码的方式,这样代码易于理解代码,不要认为他是把我们的代码面向显示对象,这里的面向对象编程,应该理解一切基于对象组织您的代码。面向接口编程,面向切面编程,都是基于的意思比较多。

我们把代码切割成一个一个对象,一个一个单元,好处可以重复用代码块,并行开发。这是面向对象的目标。这是本人自己对面向对象的理解,可能会有误区。角度不同可能看法有不同,坚持自己就好。

这么对象组合一起来完成应用,他们彼此之间一定不是孤立的,而是互相联系,如果那个对象脱离队伍,那么他就没有存在的意义。而且这种联系还是随着应用复杂而错综复杂,这一点想必大家都清楚。

好回到正题,煮咖啡,谈 dagger2。

追述最早听到依赖注入的概念,还是学习spring 的时候,这是 spring 当年引以自豪的特点。不过在 Spring 中,是通过配置 xml 文件来实现依赖注入,XML 中定义出依赖关系。配置 xml 比较繁琐,并且不属于编码范畴部分的而外工作,更大的问题是,使用了反射机制,所以只有在运行时才能测试和 debug,这样很麻烦。大家不能忽视测试呀,测试是唯一让你摆脱你加班的一个有效的解决方案。我们用的不好并不等于测试没有用。

今天先简单说一下 dagger 流程,是怎么将要被注入的对象注入到的他目标类中正确位置,代码部分可以参照《我们一起学 Dagger2 (1)》,其实这篇文章是对《我们一起学 Dagger2 (1)》延续。先整理一下思路

1. 准备要被注入的类(module)

2. 对要注入到位置进行标示(@inject)

3. 将事前准备好的实例化好的对象放置到要注入的位置(component)

1. 有关如何准备要注入对象,在 《我们一起学 Dagger2 (1)》 已经通过代码做出了的解释,这里暂时不补充了。

2. 我们的类可以注入到位置包括,类的构造函数、方法和属性。

1. 将对象注入到构造函数,只需要在构造函数添加 @Inject ,注意要保证的构造函数为public,这样准备好的依赖就会作为构造函数的参数注入使用,注入的对象可以作为类的 final 字段和私有字段使用。

2. 方法注入,本人没有实践过,就不给出建议了,就说一点,可以将对象作为方法的参数注入,不过注入的时机是在对象完全实例化后才能注入。

3. 属性注入,用的比较多,因为最近做的 Android 项目中,Acttivity 是系统创建的,所以我们通过属性注入,方法也是在 @Inject 加字段上,我们就无需赋值这个属性,这个属性不能是 private 和 final,因为这样就无法注入了,在随后将 Dagger2 注入机制时,大家就会明了为什么这样做。注入的时机也是在对象完全实例化后才能注入。

你可能感兴趣的:(Android 四大天王之 Dagger (1))