从使用到深入理解 依赖注入框架-Dagger2

##Dagger2介绍
Dagger是为Android和Java平台提供的在编译时进行依赖注入的框架。

什么是依赖注入:

依赖注入是面向对象编程的一种设计模式,其目的是为了降低程序耦合,这个耦合就是类之间的依赖引起的。
我们在一个类classA中,需要去调用另一个类classB的方法,我们就在类classA中直接创建了另一个类classB的实例,然后直接通过classB的实例去调用方法,表明,表面上看上去没毛病,但是,我们会明显的感觉到不适,就是耦合度太强。
以上这种在classA中创建classB的实例,是对象注入的一种。
我们还有很多以来注入方式来实现解耦:

  • 通过接口注入
    比如我们要想调用哪个方法,直接通过实现该声明该方法接口来完成。
  • 通过set方法来注入
    就是通过观察者模式的方式,比如回调监听,Android中为Button设置监听
  • 通过构造方法传入
  • 通过注解的方式

** Dragger2就是通过注解的方式来把实例注入到宿主类中 **

Dagger2的使用

####添加Dagger2的依赖

compile 'com.google.dagger:dagger:2.x'

####编译时生成代码的插件配置

  • project的gradle中添加
 buildscript {
  		dependencies {
    			classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  		}
	}
  • apt插件的使用
    modle的gradle中添加
apply plugin: 'com.neenbedankt.android-apt'
  • 关联Dagger2
dependencies {
		apt 'com.google.dagger:dagger-compiler:2.6'
	}

代码中的体现

以前在写MVP中曾经留下问题,就是Activity中需要去调用Presenter层中的业务逻辑方法,须在Activity中创建P层实例对象,这样V层和P层中还会存在耦合。现在继续借助Dagger2来把Pressenter实例对象注入到Activity中,来实现P层和V层解耦操作。
我用一个登录操作来说明,在V层,有俩个输入框,一个按钮,在P层有个login()方法。
我们以前是这样处理的:
从使用到深入理解 依赖注入框架-Dagger2_第1张图片
现在,我们需要注释掉这句代码
然后在

你可能感兴趣的:(Java)