依赖注入之Dagger2学习总结

本文深入探讨了控制反转和依赖注入的概念,特别是在Dagger2框架中的应用。通过实际场景,解析了如何利用Dagger2实现代码解耦,提供了一种更高效、灵活的依赖管理解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       一直认为,任何框架和理论的诞生,一定是为了解决某种特定或者一类共性的场景,没有任何场景做依托的框架是没有价值的。同理,在项目进行技术选型,框架选择的时候,所选的框架一定是满足使用场景中最方便的框架(请原谅没有使用最佳这个词,每个人对于场景的理解不同,且同一种编程思想,能有多种框架选择,很难说那个是最好的,故使用最方便)。

1.控制反转和依赖注入

       学习Dagger2之前首先得弄明白两个概念,控制反转和依赖注入。

       来一段百度的说明,不喜勿喷,就当了解下单词是啥意思好了

       控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

       

        先说一个场景:在写代码的时候常常遇到一种情况,就是需要使用到工具类,工具类里面又会引入其他工具类,但是无法保证某个工具类的构造函数一成不变,可能刚开始是一个无参的构造函数,后面需要变成一个有参的构造函数(最常见的是需要一个Context),这时候是不是需要对所有创建该类对象的代码进行修改了(多态也可以解决这个问题,但是使用的时候要考虑使用哪种构造函数,总是不方便)。

        针对这个场景,首先想到的就是要代码解耦,要解耦是否可以设计一个“容器”,通过“容器”一定可以拿到需要的对象,而不去关心它的实现。任何变化,只需要修改容器里的实现方法就行了。乍一看这不就是设计模式里的工厂模式呢,但是他俩不是一个概念,一个是设计思路,一个是设计模式

       场景和思路描述完了,就讲讲控制反转了

       控制反转,顾名思义,就是在过去调用者在使用被调用者的时候,通常是调用者主动创建被调用者的实例,而现在改为被调用者的创建工作不再由调用者执行。(这段是网上找的说明,个人认为说白了,就是过去是主动创建,而控制反转是被动获取一个需要的对象,怎么创建的无需使用者关心,基本上是框架来实现,主动变被动了)。

        依赖注入就是实现控制反转的一种方式,Dragger2又是实现依赖注入的一种框架。

 

        看着解释云里雾里的, 其实简单讲就是为了实现解耦。

 

        下面讲讲怎么使用Dragger2:

compile"com.google.dagger:dagger:2.14.1"
annotationProcessor"com.google.dagger:dagger-compiler:2.14.1"

   在项目中加入上面两句或者下面两句都行

implementation librariesDependencies.dagger
annotationProcessor librariesDependencies.daggerCompiler

加入引用就可以在项目中使用了

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值