我最近开始使用MVVM模式。我开始看到我的View-Model可能会很快变得非常庞大且无法管理。有没有办法解决这个问题?
答案 0 :(得分:3)
有一些方法可以解决这个问题。我还没有找到一个通用的“修复”,但我会分享一些我一路上采取的东西。您已将此标记为c#,但未指定您正在使用的平台(这是桌面应用,ASP.NET网站还是什么?)所以我会尽量保持通用性。我对MVVM的大多数经验都是在Web开发中,所以有些可能会进入。
首先,要认识到大规模的视图模型可能是需要重新思考的设计的症状。可能是一页试图做太多。将此页面分成几个页面不仅可以减小视图模型的大小,还可以让您将逻辑移动到其他方法中,使您的后端或服务器端代码更易于导航,并可能使页面更简洁,更容易供最终用户实际使用。
其次,仔细观察你的视图模型是否超出了它们的界限。他们可能正在做其他地方应该处理的逻辑。例如,如果您正在使用存储库(或类似的东西)来访问数据源,那么让这些类处理与构建查询或准备数据以进行保存相关的逻辑,而不是让您的视图模型执行此操作。如果您不使用存储库,请考虑添加一些存储库并将数据源访问代码转移给它们。
同样,看看你的viewmodels是否共享逻辑。如果是这样,将它转移到基类并在需要共享逻辑时从该基类继承。您可以从多个基本视图模型继承,以组合功能并减少代码重复。
最后一点是针对特定于网络的,但是:使用部分视图。如果页面的视图模型变得很大,因为该页面上有很多内容,请考虑将页面拆分为区域或窗格(至少在概念上,如果不是在视觉上),并使每个区域成为局部视图。这意味着您的视图代码更易于阅读,因为一个巨大的页面现在或多或少只是具有部分视图调用的模板。它使您的服务器端代码更容易阅读,因为构建和填充这个巨大页面的一个重要方法现在是几个较小的。最重要的是,它甚至可以让你用这些窗格做一些聪明的事情,比如使用AJAX重新加载它们(定期或基于交互或事件),而不必重新加载整个页面。
答案 1 :(得分:0)
部分类,ViewModel继承(即包含不应复制的通用逻辑的基本ViewModel),关注点分离(即使用服务层而不从ViewModels调用DB请求)......等等。
这取决于您的实际代码,以及“非常大”的含义。你的问题实际上很模糊。