用依赖注入注入 common class 是好方法吗?

Is it good way to inject common class with dependency injection?

inject viewModels,repositories,fragments,Utils 和...但是 inject common 的好方法吗classdependency injection KoinDagger-hilt?

假设我们要在fragment

中使用StringBuilder()class

第一种方法:

我们可以inject

val otherModule= module {
   single { StringBuilder() }
}

并像这样在 fragment 中使用它:

class Fragment : BaseFragment(){
  private val mPassword : StringBuilder by inject()
}

第二种方法:

我们可以在没有 injection

的情况下创建 new instance
class Fragment : BaseFragment(){
    private var mPassword = StringBuilder()
 }

我的问题是第一种方法是我们常用的方法吗?

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

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

It is the fifth principle of S.O.L.I.D — the five basic principles of object-oriented programming and design by Uncle Bob — which states that a class should depend on abstraction and not upon concretions (in simple terms, hard-coded).

According to the principles, a class should concentrate on fulfilling its responsibilities and not on creating objects that it requires to fulfill those responsibilities. And that’s where dependency injection comes into play: it provides the class with the required objects.

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

现在我的意见是:如果可能的话,尝试注入那些你必须经常使用的依赖项,如果可能的话,通过构造函数注入来注入它们。有了这个,你可以很容易地看到,你的 class 使用了哪些依赖项。尽量不要注入使用过一次的 classes 或通用语言 classes.