当我在 MVVM 模式下设计多个视图时,每个视图是否都有自己的 ViewModel 还是它们都共享同一个 ViewModel?我知道这最终是一个灵活的决定,但最佳实践是什么?
我的直觉告诉我每个视图(即每个单独的 UI 窗口)都有一个 ViewModel。 MVVM 的所有博客示例都显示一个视图,但除此之外没有太多内容。
是的,基本上这个想法是你的 viewModel 应该只被一个视图使用。如果您使用 viewModel 来填充一个区域(例如在 ASP.NET MVC 中),则每次在不同位置呈现该视图时,该 viewModel 都会被“重用”。
This article是 Josh Smith 对 MVVM 模式的讨论。然后,沃德·贝尔 (Ward Bell) 在此讨论article他认为乔什遗漏了什么,同时坚称乔什的工作仍然非常出色。
沃德出色地阐述了这种模式的复杂性并展示了存在的紧张气氛。以下是他对紧张局势的看法:
根据我的经验,View 和 ViewModel 设计之间存在“对话”。 VM 的存在是为了服务于视图,即使它努力独立于任何特定的具体视图。如果没有可以使用虚拟机的视图,虚拟机就毫无用处;显然,VM 开发人员必须
请注意视图开发人员的咒语。
另一方面,在业务应用程序中,应用程序的命令(视图必须做什么才能满足业务需求)是程序员的职责,并且最好通过 ViewModel 的功能来表达。
这就是 View 和 ViewModel 设计之间必要的张力。作为一名开发人员,我效忠于 ViewModel(“应用程序应该做一些有价值的事情”),但以牺牲 View 为代价来捍卫这种效忠是愚蠢的(“良好的用户体验对于使应用程序易于学习和使用至关重要”)。使用”)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)