MVVM 中 ViewModel 的真正目的是什么?

Eng*_*ock 6 wpf mvvm viewmodel

我和 teamlead 讨论过这个话题,从他的角度来看,我们可以只使用绑定和命令省略 ViewModel,因为我们可以在没有 VM 的情况下使用自动化或我们自己开发的 UI 测试机制来测试 UI 行为(基于对视图的自动点击)。那么,如果没有真正的好处,我为什么要产生“冗余”实体?此外,自动化集成测试看起来比 VM 测试更具指示性。因此,我们似乎可以混合使用 VM 和模型。

更新: 我同意混合虚拟机和模型将数据模型和数据转换规则带入单个 .cs 以在视图中表示它。但如果这只是一个好处 - 我不想为每个视图创建一个 VM。

那么你知道VM的哪些优点呢?

Noi*_*ich 6

VM 是 UI 背后的逻辑。至少从我的经验来看,将 UI 代码与逻辑结合起来会一团糟。您的视图应该定义您看到的内容 - 按钮、菜单等。您的 VM 负责绑定和处理由用户引起的事件。

编辑:
不想为每个视图创建 VM 听起来不像是面向软件的原因。这样做将使您的视图逻辑清晰,您的模型可以自由地成为核心层和应用程序层之间的连接层。
我喜欢下面提到模型及其作用的示例(为什么它不应该与 VM 结合):假设您正在使用 Google 地图开发一些 Android 应用程序。谷歌地图是你的核心。然后有一天,您真的需要选择将地图的部分着色为粉红色,亮粉红色。向 Google 索要的电子邮件colorPink(Map)可能会让您无处可去。这就是您的模型介入并为您提供定义小指方法所需的地图包装器的地方。
如果没有单独的模型,您就必须检查使用map和更新它的每个 VM 。

因此,视图有作用,模型有作用,VM 是它们之间的逻辑。

编辑 2:
在某些情况下不需要模型层 - 起初我倾向于不同意,但经过讨论后被说服:在相对较小的应用程序中,模型最终可能成为一个冗余包装器,核心没有附加功能. 在这种情况下,您可以直接使用核心对象。