Android 使用 Dagger 2 的依赖注入

Android Dependency Injection using Dagger 2

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

new Class();

但我有一种感觉,我不再使用依赖注入了。我注入任何需要实例的东西。这是正确的吗?或者我可以注入一些东西还是我可以注入所有东西

过度使用依赖注入是非常容易和普遍的,我不赞成 "inject anything that needs an instance" 的做法。但是,您需要决定哪些方面属于哪个组。

我看到的一个区别是 "injectables" 与 "newables",如 this oft-cited article by Miško Hevery (also on the Google Testing Blog), this article by Giorgio Sironi, and .

你可能想权衡依赖注入的优势,包括:

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

...费用,包括:

  • 很难判断可以提供哪个实现
  • 额外的供应商类和实例,这在embedded/mobile平台上可能很昂贵
  • 复杂的语法和构建步骤来处理混合构造函数参数和工厂,例如通过 AutoFactory

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