Dagger2学习笔记

发布时间:2017-7-9 7:19:58编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Dagger2学习笔记 ",主要涉及到Dagger2学习笔记 方面的内容,对于Dagger2学习笔记 感兴趣的同学可以参考一下。

Dagger2是第一个使用生成代码的方式实现依赖注入的框架。作为Dagger的升级版本,自然有它的优势,优先注重的是执行效率。本文着重介绍Dagger2。官方据点传送门: https://google.github.io/dagger//users-guide.html

首先来看一下依赖注入和控制反转

在软件工程领域,DI是一种实现控制反转用来解决依赖的设计模式,依赖是一个可以被使用的对象(服务),注入是把依赖传递给依赖它的对象(客户),即要使用它的对象,这样,服务就成了客户组成的一部分。传递服务到客户,而不是让客户创建或寻找服务,是这个模式的基本要求。

依赖注入允许程序设计遵循依赖倒置原则,客户把为它提供依赖的责任委托给外部代码(依赖注入器),它自身不允许使用注入器的代码,而是注入器创建服务并把他们注入到客户。这意味着客户不需要知道注入器代码,不需要知道如何创建服务,不需要知道自己使用的具体是什么服务,而只需要知道如何使用服务的接口定义。这就分离了创建和使用的关系。

客户接受依赖注入有三种方式:

  1. 1.      基于Setter
  2. 2.      基于接口
  3. 3.      基于构造函数

Setter和构造函数注入的方式主要看什么时候会使用到依赖,接口注入方式在于依赖可以控制自己的注入。三者都需要独立的注入代码来负责引入客户和依赖之间的相互关系。

控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。

实现控制反转主要有两种方式:依赖注入和依赖查找。两者的区别在于,前者是被动的接收对象,在类A的实例创建过程中即创建了依赖的B对象,通过类型或名称来判断将不同的对象注入到不同的属性中,而后者是主动索取响应名称的对象,获得依赖对象的时间也可以在代码中自由控制。

Dagger2

Dagger2是第一个使用生成代码的方式实现依赖注入的框架。指导思想是模拟生成开发者写的代码来确保依赖注入足够简单,可跟踪、可执行。

Dagger2创建类的实例并满足他们的依赖,它使用javax.inject.Inject 注解来识别感兴趣的构造函数和字段。

以下大部分内容译自官网:https://google.github.io/dagger//users-guide.html

这里使用一个CoffeeApp的例子来说明如何使用Dagger。

声明依赖

使用@Inject来注解Dagger2应该用来创建对象实例的构造函数,当一个新的对象实例被请求的时候,Dagger会取得要求的参数(如果有)并调用这个构造函数。

class Thermosiphon implements Pump {

  private final Heater heater;

 

  @Inject

  Thermosiphon(Heater heater) {

    this.heater = heater;


上一篇:ionic使用常见问题(八)——PHP无法获取$http的post数据
下一篇:[LeetCode] Task Scheduler 任务行程表

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款