IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android开发中依赖注入真的好用吗?「懒人必备」真不戳 -> 正文阅读

[移动开发]Android开发中依赖注入真的好用吗?「懒人必备」真不戳

定义

依赖注入(DI)是一种广泛的应用编程的技术,非常适合Android开发,通过遵循DI的原则,您可以为良好的应用程序架构打下基础。

DI 让开发者能够编写低耦合代码,更容易测试。越是复杂的Android 软件开发周期越长,测试效率也就越重要。我们认为,DI是JUST EAT 代码可配置和可测试的关键,通过DI可以创建一个值得信任的代码库。

尽管我们的代码库相当庞大和复杂,但使用 DI 在一定程度上让我们具备了健壮的测试,从而保证了可以定期迅速地发布。

常见的依赖注入框架

  • 在服务器后端,一般使用Spring框架进行依赖注入。
  • 在Android上,一般使用Dagger系列进行依赖注入。

两种主要的依赖项注入方式

  1. 构造函数注入
  2. 字段注入(setter注入)

依赖注入的优点

  • 总的来说:易于复用,易于重构,方便测试
  • 重用类以及分离依赖项:更容易换掉依赖项的实现。由于控制反转,代码重用得以改进,并且类不再控制其依赖项的创建方式,而是支持任何配置。比如Car依赖Engine,那么将Engine作为依赖注入,而不是Car中创建Engine实例。如果有Engine的子类想要用Car,则可以直接使用。
  • 易于重构:依赖项成为 API Surface 的可验证部分,因此可以在创建对象时或编译时进行检查,而不是作为实现详情隐藏。
  • 易于测试:类不管理其依赖项,因此在测试时,可以传入不同的实现以测试所有不同用例。

依赖注入基本概念

编写代码时我们常常会发现有一些类是依赖于其它类的。所以类A可能需要一个类B的引用或对象。为了理解得更清晰些,我们来看看这个需要使用 Engine 类的 Car 类例子。


publicclassCar{privateEngine engine;publicCar(){engine=newPetrolEngine();

这个代码运行正常,但缺点是 Car 和 Engine 之间高度耦合。

Car 类自己创建新的 Engine 对象,则它必须准确知道 Engine 的实现方法,在这个例子中就需要 PetrolEngine 。

我们做些小的改进减少耦合度,来看看创建 Car 类的不同方法吧。


publicclassCar{ privateEngine engine; publicCar(Engine engine){ this.engine=engine;

这里,我们通过Car 的构造函数,向Car 传递了一个Engine 对象。

这意味着两个对象之间的耦合变低了。

Car类不需要知道 Engine 的具体实现,只要继承了原始 Engine 类,任何类型 Engine 都符合要求。

在这个例子中,通过 Car 类的构造函数传递,或者说是注入了依赖。其实我们已经完成了一种称为构造注入的注入方法,当然,我们也可以通过方法注入或是借助 DI 框架直接执行变量注入。

其实,DI仅仅如此。它最基本的用法就是向类中传递一个依赖,而不是直接在类中实例化。

DI库

Dagger

Dagger 是适用于 Java、Kotlin 和 Android 的热门依赖项注入库,由 Google 进行维护。Dagger 为您创建和管理依赖关系图,从而便于您在应用中使用 DI。它提供了完全静态和编译时依赖项,解决了基于反射的解决方案(如 Guice)的诸多开发和性能问题。

Hilt

Hilt 是推荐用于在 Android 中实现依赖项注入的 Jetpack 库。Hilt 通过为项目中的每个 Android 类提供容器并自动为您管理其生命周期,定义了一种在应用中执行 DI 的标准方法。

**Hilt 在热门 DI 库 Dagger 的基础上构建而成,**因而能够受益于 Dagger 提供的编译时正确性、运行时性能、可伸缩性和 Android Studio 支持。

其实android使用新技术来开发的时间已经落后与后台和前端了,前端开发的技术理念相对于比较先进,其次后台,最后才是android。所以技术需要进阶。对此我把【华为高级Android开发】整理出的Android进阶手册分享出来,许多新技术和高级进阶技术里面都有详细讲解。对此我希望大家好好利用好资源学习起来;能偷懒绝不能勤快。

文末

很多库的出现就是为了能让程序员少写代码的,为了给开发人员偷懒用的。 依赖注入在后台应用已经很多年了,android对它的使用才刚开始。

可能到现在依赖注入大部分android开发都没听过有这个技术,不可否认的是这个技术很牛批,使用起来很方便

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:27:25  更:2022-09-13 11:31:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 5:48:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码