每个屏幕有多个视图模型

问题描述 投票:0回答:1

开发者您好,我有一个问题希望您能帮助我。

我读到谷歌建议为每个屏幕都有一个视图模型,屏幕可以与视图模型通信以执行许多不同的操作。 所以View Model会有很多职责,这与solid的S相悖。 为每个屏幕提供必要的视图模型以便每个屏幕都有单一的职责,这样会好吗?

我相信这种多视图模型方法将提高可重用性、封装性和碎片化; 因为如果两个屏幕需要执行相同的操作,则无需重复相应视图模型的代码或将相同的用例传递给两个屏幕。 每个屏幕都会访问您需要的内容。

android mvvm android-viewmodel android-architecture
1个回答
3
投票

你问了一个很好的问题。

这些只是我的意见: 您提到了一个屏幕的多个 ViewModel(假设为“视图”)和单一职责原则。

  1. 是的,您可以为一个视图使用多个 ViewModel。但它在 MVVM 结构中并不典型。
  2. ViewModel 的主要目的是分离您的关注点,并且可以在不启动设备或模拟器的情况下测试应用程序的逻辑(在 JVM 级别运行)
  3. SRP不仅仅是你在ViewModels中考虑的方式,我给你举个例子: 想象一下您想要验证电子邮件或电话,......在您的 视图模型。您可以创建一个遵循 SRP 的验证类(它具有单一职责)。现在您可以在 ViewModel 中需要的地方使用此类。定义遵循 SRP 的共享类、存储库或用例,并在 ViewModel 中使用它们。不要在视图中定义多个 viewModel。我相信每个视图都有自己的 ViewModel。

在android中,viewModel也被设计用来保存视图的数据。这意味着当您的配置更改时,您的 Activity 和片段的数据不会被破坏。

希望这对您有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.