【问题标题】:What is the better MVVM approach to define a ViewModel class?定义 ViewModel 类的更好的 MVVM 方法是什么?
【发布时间】:2021-12-28 19:17:45
【问题描述】:

我看过很多关于 MVVM 的教程。他们中的大多数人说你需要像这样定义你的 ViewModel 类:

class MainViewModel: ViewModel() {
    ...
}

但最近我偶然发现了来自 Google 的 Dagger tutorial project。有不同的 ViewModel 类定义:

class MainViewModel(private val userDataRepository: UserDataRepository) {
    ...
}

所以我想知道,这两种方法有什么区别?

【问题讨论】:

    标签: android kotlin mvvm


    【解决方案1】:

    这不是一个相关的比较。 CodeLab 使用非 ViewModel ViewModel 类来简化他们对 DI 工作原理的解释。请注意,它不是 ViewModel 的子类。此外,该项目在没有依赖注入的情况下启动,并且您稍后会添加它,因此启动项目并不是如何设计的一个很好的例子。

    无论哪种方式,如果您有一个存储库,您需要某种方式来获取对您的 ViewModel 中的存储库的引用。如果是通过构造函数,则必须在为此类构建的关联 ViewModelFactory 中获取对存储库的引用。如果你使用 Dagger,你可能会让 Dagger 为你生成这个工厂并注入引用。

    如果您的 ViewModel 不使用存储库,那么您将没有任何理由在构造函数中拥有一个存储库,无论是否使用依赖注入。许多基本的 MVVM 教程将从最基本的示例开始,即不需要参数的 ViewModel。这并不意味着 ViewModel 永远不应该有依赖关系。

    【讨论】:

    • 现在很清楚了。谢谢!
    猜你喜欢
    • 2011-04-25
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2019-10-23
    相关资源
    最近更新 更多