返回

Dagger 难学难用,Hilt却用实力改变偏见,Google大力推崇依赖注入有何用意?

Android

说到依赖注入,做 Android 的人都会想到一个库:Dagger;说到 Dagger,大家的反应普遍是一套三连:牛逼、高端、我才不用。

又牛逼又高端,为什么不用?因为太难了。是吧?又难学又难用。大多数的人在面对需要用到 Dagger 的业务时,往往会退而求其次的选择其他简单的依赖注入框架,比如:Koin,或者干脆不使用依赖注入,使用 new 或者 object 来直接创建对象,甚至将其作为类中的一个成员变量。

Google 在其官方文档中极力推荐使用 Dagger 作为依赖注入框架,但却没有像推荐 Kotlin 那样,说非用它不可。这说明 Google 认为依赖注入是做好 Android 开发非常重要的一环,但它也允许 Android 开发者选择其他技术来实现依赖注入。

但就在上个月,Google 出人意料地发布了一个新的依赖注入库:Hilt。该库基于 Dagger 构建,并提供了对 Android 框架的完整支持,其目标是让开发者能更轻松、更安全地构建 Android 应用,并带来更高的可测试性。

Hilt 有多简单呢?

Hilt 本身并不是一个依赖注入框架,它依赖于 Dagger,也只和 Dagger 2.24+ 兼容。

Hilt 只是一个注解处理器,它通过生成一个 DaggerComponent 来简化 Dagger 模块的创建,并通过生成一个 AndroidInjector 来简化 @Inject 注释的使用。

通过使用 Hilt,你可以在没有任何 Dagger 代码的情况下,对你的 Android 应用使用依赖注入。

好了,说了这么多,你可能已经发现了吧,Hilt 就是一个 Dagger 框架的插件,专门用来做依赖注入的。

Hilt 的出现,让 Dagger 的使用变得更加简单了,也让依赖注入这项技术在 Android 开发中的应用变得更加广泛了。

Dagger 框架的插件,专门用来做依赖注入的。Hilt 的出现,让 Dagger 的使用变得更加简单了,也让依赖注入这项技术在 Android 开发中的应用变得更加广泛了。

Dagger 和 Hilt 的区别

Dagger 是一个功能齐全的依赖注入框架,而 Hilt 只是一个 Dagger 的注解处理器。

Dagger 需要开发者手动创建 DaggerComponentAndroidInjector,而 Hilt 可以通过注解处理器自动生成这些代码。

Dagger 的学习曲线比较陡峭,而 Hilt 的学习曲线比较平缓。

为什么 Google 要大力推崇依赖注入?

Google 大力推崇依赖注入,是因为依赖注入是一种很好的软件设计模式,它可以帮助开发者构建出更松散耦合、更易于维护和测试的代码。

依赖注入可以让你将代码中的依赖关系显式化,这使得你的代码更容易阅读和理解。

依赖注入还可以让你更容易地隔离代码中的不同部分,这使得你的代码更容易测试和维护。

如果你是一个 Android 开发者,那么我强烈建议你使用 Hilt 来进行依赖注入。Hilt 可以让你更轻松、更安全地构建 Android 应用,并带来更高的可测试性。