【问题标题】:Android Dependency Injection using Dagger 2使用 Dagger 2 的 Android 依赖注入
【发布时间】:2017-04-25 07:31:33
【问题描述】:

我刚开始在 android 中使用 dagger 2 进行依赖注入。我现在使用它的方式我确定我没有

新类();

但我有一种感觉,我已经用完了依赖注入。我注入任何需要实例的东西。这是正确的吗?或者有什么我可以注入的东西,或者我可以注入所有东西

【问题讨论】:

  • 你不应该注入所有东西,首先你要考虑的是,你是否有第三方依赖以及你使用它们的频率。
  • 嗯,是的,大多数 new Class() 可以用模块中的无范围提供程序方法替换。
  • 如果您想赢得注射比赛,您可能走在正确的轨道上

标签: java android dependency-injection dagger-2


【解决方案1】:

过度使用依赖注入是非常容易和常见的,我不赞成“注入任何需要实例的东西”的做法。但是,您需要决定哪些方面属于哪个组。

我看到的一个区别是“注射剂”与“新药”,如this oft-cited article by Miško Hevery(也在the Google Testing Blog)、this article by Giorgio Sironithis Dagger 2 StackOverflow answer

您可能需要权衡依赖注入的优势,其中包括:

  • 环境替代实现的能力,尤其是在针对未编写、繁重或不确定的实现进行测试时
  • 与您的依赖项的依赖项隔离,这些依赖项可能会独立变化和发展

...反对费用,其中包括:

  • 很难判断可以提供哪种实现方式
  • 额外的 Provider 类和实例,在嵌入式/移动平台上可能很昂贵
  • 复杂的语法和构建步骤来处理混合构造函数参数和工厂,例如通过AutoFactory

价值和模型对象,不太可能有多个或有风险的实现,通常完全属于 newable 阵营;相互关联和相互依赖的服务通常远属于可注入阵营。对于轻量级服务和实用程序,您需要确定上面提供的好处并根据您需要的好处划清界限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多