【问题标题】:Is it good way to inject common class with dependency injection?用依赖注入注入公共类的好方法吗?
【发布时间】:2021-01-25 04:54:31
【问题描述】:

injectviewModels,repositories,fragments,Utils 和...但是inject 普通classdependency injection Koin 或@987654330 的好方法吗?

假设我们要在fragment中使用StringBuilder()

第一种方法:

我们可以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()
 }

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

【问题讨论】:

    标签: android kotlin dependency-injection instance koin


    【解决方案1】:

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

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

    根据原则,一个班级应该专注于实现 它的职责而不是创建它需要的对象 履行这些职责。这就是依赖注入的地方 发挥作用:它为类提供所需的对象。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2021-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多