Dagger2简介(一)
Dagger2简介(一)
Dagger
A fast dependency injector for Android and Java.
Dagger
是一个依赖注入(Dependency Injection
,简称DI
)框架,butterknife
也是一个依赖注入框架。但是Dagger2
比Butterknife
更强大的多,它的主要作用,就是对象的管理,其目的是为了降低程序耦合。
有关注解和ButterKnife
的解析请看之前的文章:注解使用及ButterKnife源码解析
那么神马是依赖注入,其实我们一直在用:
通过接口注入
interface Ib {void setB(B b) } public class A implements Ib {B b;@overridevoid setB(B b) {this.b = b;} }
通过
set
方法注入public class ClassA {ClassB classB; public void setClassB(ClassB b) {classB = b;} }
通过构造方法注入
public class ClassA {ClassB classB;public void ClassA(ClassB b) {classB = b;} }
通过注解的方式注入
public class ClassA {//此时并不会完成注入,//还需要依赖注入框架的支持,如Dagger2@inject ClassB classB;public ClassA() {} }
说了这么久,也不知道到底这货有什么用,这里举个例子,比如有个类A
,他的构造函数需要传入B,C
;然后代码里有10个地方实例化了A
,那如果功能更改,A
的构造函数改成了只有B
,这个时候,你是不是要去这10个地方一个一个的改?如果是100个地方,你是不是要吐血?!如果采用dagger2
,这样的需求只需要改1-2个地方。这是真的吗?听起来好像挺牛逼的样子。
也有人怀疑Dagger2
利用注解是不是采用了反射,会影响性能,这个问题其实在之前的文章ButterKnife源码解析就已经介绍过了。Dagger2
、ButterKnife
这类依赖注入框架都已经采用了apt
代码自动生成技术,其注解是停留在编译时,可以不用考虑性能的问题。
更多文章请查看AndroidNote
你的star
是我的动力!!!
Dagger2简介(一)相关推荐
- Dagger2 简介
本位参考:https://juejin.im/post/5bcc7151f265da0ab41e8f6e 讲Dagger2就不能不讲依赖注入,因为Dagger2是为了解决这个难题而创造出来的,那么什么 ...
- Android依赖注入的实践——Dagger2
个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 ! 同时,搜索微信公众号CoorChice,或扫描文章末尾 ...
- dagger2 注入_如何使用Dagger 2在您的应用程序中实现依赖注入
dagger2 注入 Kriptofolio应用程序系列-第4部分 (Kriptofolio app series - Part 4) Dependency injection will signif ...
- Android神匕首—Dagger2依赖注入框架详解
简介 Dagger-匕首,鼎鼎大名的Square公司旗下又一把利刃(没错!还有一把黄油刀,唤作ButterKnife) Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagg ...
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Docker学习(一)-----Docker简介与安装
一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- TensorRT简介
TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...
- 谷粒商城学习笔记——第一期:项目简介
一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...
最新文章
- 爬虫python代码-Python爬虫入门(01) -- 10行代码实现一个爬虫
- 跳一跳python刷分_【Python跳一跳刷分辅助】iPhone版_Python跳一跳刷分辅助Ios最新版下载_Python跳一跳刷分辅助v1.0.1苹果版免费下载 - 九酷苹果网...
- leetcode 202. 快乐数 思考分析(哈希集合与双指针解)
- mysql简单的sql语句单表分组查询
- 力扣141.环形链表
- 马斯克称新一代Roadster就有望在2023年开始交付
- 程序员一般都浏览这些网站,不仅仅提升编程水平!
- Linux中命令选项及参数简介
- 内存可见性,指令重排序,JIT。。。。。。从一个知乎问题谈起
- SQL Server之旅:(二)Could not load the DLL xpstar90.dll
- ubuntu wireshark找不到网卡及开启IP转发
- 9WinMap 映射
- VS编译间接引用的DLL不一定输出
- 计算机网络专助理工程师考试时间,软考高级工程师职称考试时间
- STAR-CCM+ 计算RAE-2822翼型在FATP巡航状态下不同攻角下的升力系数。
- homeassistant添加米家空调伴侣
- JSRUN, 前端教程大家一起来编写
- C语言中用do while解决阶乘之和问题
- TikTok涨粉?参考抖音?账号增粉解析!
- dubbo学习过程、使用经验分享及实现原理简单介绍,dubbo经验分享