# Dagger2Demo **Repository Path**: harukong/Dagger2Demo ## Basic Information - **Project Name**: Dagger2Demo - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Dagger2的基本使用 ### Dagger2是什么? Dagger2是一个**依赖注入**框架,我们常用的依赖注入框架还有ButterKnife。想要理解依赖注入,这边我们需要了解一个概念:控制反转。 ### 什么是控制反转? 控制反转(又叫IOC:Inversion Of Control):是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统的所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 ### 我们为什么要使用Dagger2? Dagger2是用来使代码解耦的,一个类的new代码是非常可能充斥在app的多个类中的,假如该类的构造函数发生变化,那这些涉及到的类都得进行修改。 如果使用Dagger2的Inject注解构造函数,即使构造函数发生较大的变化,我们基本上都不需要修改任何代码。 ### 命名规约 + @Provides方法用provide前缀命名 + @Module 用Module后缀命名 + @Component 以Component作为后缀 ### Dagger2使用过程 + Dagger2是通过依赖注入完成类的初始化。这个过程需要三部分,见图1: > 1. 依赖提供方(生产者)@Module && @Provides | @Inject构造方法 > 2. 依赖注入容器(桥梁)@Component > 3. 依赖需求方(消费者)@Inject Object ``` graph LR A(依赖提供方)-->B(依赖注入容器) B-->C(依赖需求方) ```