使用Dagger 2的Android依赖注入

时间:2017-04-25 07:31:33

标签: java android dependency-injection dagger-2

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

  

new Class();

但我有一种感觉,我过度使用依赖注入。我注入任何需要实例的东西。这是正确的吗?或者有一些我可以注射的东西,或者我可以注射一切

1 个答案:

答案 0 :(得分:1)

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

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

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

  • 环境替代实施的能力,特别是在针对不成文,重型或非确定性实施的测试中
  • 绝缘与依赖关系的依赖关系,可能会独立变化和发展

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

  • 很难说明可能会提供哪种实施
  • 其他提供商类和实例,在嵌入式/移动平台上可能很昂贵
  • 复杂的语法和构建步骤来处理混合构造函数参数和工厂,例如通过AutoFactory

价值和模型对象,不太可能有多个或有风险的实现,通常在 newable 阵营中;互联和相互依赖的服务通常远离注射阵营。对于轻量级服务和工具,您需要确定上面提供的好处,并根据您需要的好处绘制线。