用依赖注入注入普通类是个好方法吗?

问题描述

inject viewmodelsrepositoriesfragmentsUtils和...,但这是inject常见{{ 1}}与class dependency injectionKoin

假设我们要在Dagger-hilt中使用StringBuilder()

第一种方法

我们可以fragment

inject

像这样在val otherModule= module { single { StringBuilder() } } 中使用它:

fragment

第二种方法

我们可以在没有class Fragment : BaseFragment(){ private val mPassword : StringBuilder by inject() } 的情况下创建new instance

injection

我的问题是第一种方法对我们来说是常见的方法吗?

解决方法

不,您根本不会注入通用语言类。没有好处。我们在类需要其他我们不想自己创建的依赖项时注入它们,因此我们让DI框架创建它们。

,

我会说这取决于。 Di的主要目标/概念是实现S.O.L.I.D的首要原则,或者如freecodecamp.org所述:

这是S.O.L.I.D的第五项原则-S.O.L.I.D的五项基本原则 Bob叔叔的面向对象的编程和设计– 一个类应该依赖于抽象而不是依赖于具体(在 简单术语,硬编码)。

根据这些原则,一个班级应该集中精力去实现 它的责任,而不是创建它需要的对象 履行这些责任。那就是依赖注入的地方 发挥作用:它为类提供了必需的对象。

here提供了另一个很好的答案,因为在不使用依赖项注入时已经讨论过。

现在我的观点是:如果可能,尝试注入必须经常使用的那些依赖项,如果可能,请通过构造函数注入注入它们。这样,您可以轻松地看到您的类使用了哪些依赖项。尽量不要注入曾经使用过的类或通用语言类。