【问题标题】:What is Model in MVVM?MVVM 中的模型是什么?
【发布时间】:2019-07-16 13:03:02
【问题描述】:

我对 MVVM 中模型的实现有些困惑,以下 2 点中哪一个最有意义?

  • 我们是否应该将模型视为存储库并在 ViewModel 中引用存储库。
  • 应该有单独的模型类与存储库交互,并且 ViewModel 具有该模型类的引用。

【问题讨论】:

  • 模型不过是代表数据的类。它告诉您从下到上流动的数据架构/蓝图,反之亦然。存储库不是模型,它的唯一工作是获取本地或基于云的数据。
  • 那么你建议用什么模式来获取视图模型中的数据?第 1 点还是第 2 点?
  • 我使用第 2 点,viewmodel 看到模型并且模型从存储库中获取数据,如果您更改存储库(例如从 json 而不是文件获取数据)和model 和 viewmodel 不需要任何更改,因为业务逻辑没有改变
  • 所有的 MV* 模式(MVC、MVP、MVVM)只描述了如何分离 UI。但 UI 只是应用程序的一部分。您不能期望找到 MV* 模式所描述的整个应用程序概念。
  • 不——当您谈到汽车的车轮时,您是否关心发动机?但是您需要为汽车配备发动机 - 但是在谈论车轮时,这并不重要

标签: android mvvm architecture


【解决方案1】:

模型包含业务逻辑,这包括您的域和数据层。 Repository 只是 Model 的一部分。

【讨论】:

    【解决方案2】:

    Model 和 Repository 完全不同。

    Repository 更多地涉及如何从另一端的数据库中检索数据,模型或您的 ViewModel 定义了如何将该数据绑定到您的 UI。

    所以我们可以说,Repository 是您的数据库和模型之间的桥梁,它为视图模型提供数据。

    使用此链接以获得更好的参考: https://android.jlelse.eu/android-architecture-components-now-with-100-more-mvvm-11629a630125

    【讨论】:

    • 所以你是说模型和视图模型有相同的职责?
    • 是的。他们确实有相同的责任。
    • 如果他们有相同的职责,为什么他们会是两个不同的概念?在原始定义中,模型包含您的 app 的数据和逻辑(例如 isDownloadPermitteduserChatHistory),视图模型包含特定 view 的数据和逻辑i>(例如isDownloadButtonVisibleuserHistorySummary
    猜你喜欢
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2011-06-02
    相关资源
    最近更新 更多