为什么 MVVM 总是和 Dagger 一起出现?

Why is MVVM always presented with Dagger?

我是 MVVM 架构的新手,我在互联网上找到的所有文档都使用 Dagger 和 MVVM 架构。 Dagger 对我来说是一种模糊的风格,在我看来,仅仅创建一个 android 应用程序就过于复杂了。所以我的问题很简单:

  1. 为什么 should/must 我使用带有 MVVM 架构的 Dagger?为什么 Dagger 在 MVP 架构中的出现频率不如在 MVVM 架构中的出现?
  2. 是否可以使用 MVVM 架构开发一个 android 应用程序而不使用 dagger?

您不需要 MVVM 架构或 MVP 架构中的 Dagger - Dagger 只是一个依赖注入器库。您现在可以在 Kotlin 中使用延迟加载或 Koin 作为 Dagger 的替代品。架构模式不依赖于 Dagger。

我不同意那些说匕首只是库的人。

Dependency Injection : 是一个概念和一种编码方式,dagger 可以更容易地利用带有注释的依赖注入。

google 中的 Sun-Flower 项目在使用 MVVM 模式时也没有使用 Dagger。

依赖注入只是一个想法。

Dagger2 是一个使用注释处理来帮助依赖注入样板的库。

甚至 Jake Wharton 都说 Dagger2 对于较小的应用程序来说可能有点矫枉过正。

完全可以在没有 DI 框架的情况下开发 MVVM 应用程序。从技术上讲,您根本 不需要 DI,但它确实会使事情变得更容易 - 特别是在测试方面。