博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android依赖注入框架选型
阅读量:6139 次
发布时间:2019-06-21

本文共 1113 字,大约阅读时间需要 3 分钟。

说到Android依赖注入框架,网上比较推崇的是google维护的Dagger2框架,使用依赖注入可以带来以下好处: 1、依赖的注入和配置独立于组件之外。2、因为对象是在一个独立、不耦合的地方初始化,所以当注入抽象方法的时候,我们只需要修改对象的实现方法,而不用大改代码库。3、依赖可以注入到一个组件中:我们可以注入这些依赖的模拟实现,这样使得测试更加简单。Dagger2可以免去在每个使用类的地方都使用构造函数构造一个实例,使用@Inject注解可实现类实例的依赖注入,依赖的构建分别支持@Provide、@module注解,用于构建自定义的类和第三方类,并使用@Scope注解来声明依赖的作用域,可以跟acitvity的声明周期绑定在一起,在需要的地方自动实现单例模式。写到此处可见Dagger2框架提供的功能很强大,可以帮助我们的代码进行很好的解耦,但是如果把他实施到具体的项目当中,你会发现事情并没有想象中那么便利,而且我们的工作量增加了:

应用中每个页面的需要依赖注入的地方都需要写一份模板代码来实现,比较繁琐。而且如果我们的项目是多module工程,需要创建很多Component类,不能放到library中去实现,因为这会涉及到module工程循环引用的问题。我们平时开发的工作量主要来源于业务需求,需要创建很多新的页面,这时候不仅仅要考虑代码怎么做到低耦合,代码的高内聚也是很重要的,这有助于减少代码量和测试的工作量。由此想到是否可以把依赖注入的过程放到Activity或者Fragment的基类中去实现,比如将MVP代码框架里面的presenter放到基类中去注入,我们去实现每个具体的页面的时候去扩展这个基类即可,不需要再在每个扩展类中去写这些模板代码。 RoboGuice是一种比Dagger使用更简易的依赖注入框架,他不需要定义各种Component注射器,直接通过 RoboGuice.getInjector()就可以拿到注射器,支持视图、资源、系统服务、对象等注入,并且可以通过注解来实现单例模式,基本能实现dagger提供的功能,非常适合MVP框架,可以在Activity或者Fragment的基类去实现presenter的注入:

笔者非常推荐大家使用这套框架! 如果项目使用kotlin语言则有更多的选择,kodein框架是一个不错的选择:

只要在你的Module中绑定需要的实例构造方法,在需要用到该实例的页面通过by instance()的调用去实现依赖的检索:

更多用法可以上 查看:

转载于:https://juejin.im/post/5cd7b55cf265da036902b54e

你可能感兴趣的文章
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>