2013-02-13 56 views
-1

我最近开始使用MVVM模式。我开始发现我的View-Model可能会很快变得非常大而且难以管理。有什么方法可以解决这个问题吗?如何让我的视图模型变得单一/非常大?

+1

多视图模型...? – 2013-02-13 13:47:52

+0

信息太少。 – Jon 2013-02-13 13:48:21

+0

阅读Robert C. Martin的“Clean Code”(ISBN 0-132-35088-2) – 2013-02-13 13:54:21

回答

3

有几种方法可以解决这个问题。我还没有找到一个单一的通用“修复”,但我会分享一些我一路上选择的东西。你已经标记为,但没有指定你使用的是什么平台(这是一个桌面应用程序,ASP.NET网站,或什么?),所以我会尽量保持它的通用性。我的大部分MVVM经验都是在网页开发中,但其中的一部分可能会蔓延。

首先,认识到大量视图模型可能是需要重新思考的设计的症状。这可能是因为一个页面试图做太多。将这个页面分成几个页面不仅会减少视图模型的大小,还会让您将逻辑转移到其他方法中,并使您的后端或服务器端代码更易于导航,并且可能会使页面变得更加简单和简单供最终用户实际使用。

其次,仔细观察一下,看看你的视角模型是否超出了他们的范围。他们可能正在做逻辑,应该在其他地方处理。例如,如果您使用存储库(或类似的东西)访问数据源,请让这些类处理与构建查询或准备保存数据有关的逻辑,而不是让视图模型执行此操作。如果您不使用存储库,请考虑添加一些内容并将数据源访问代码移入其中。

同样,看看你的viewmodels是否共享逻辑。如果是这样,请将其转换为基类,并在需要该共享逻辑时从该基类继承。您可以从多个基本视图模型继承来组合功能并减少代码重复。

最后一点是更具体的网络,但:使用部分视图。如果页面的视图模型变大,因为该页面上有很多东西,可以考虑将页面分割成区域或窗格(至少在概念上,如果不是可视的)并且使每个区域成为局部视图。这意味着您的视图代码更易于阅读,因为这是一个巨大的页面,现在或多或少只是一个具有部分视图调用的模板。它使您的服务器端代码更易于阅读,因为构建和填充这个巨大页面的一个重要方法是现在几个较小的方法。最重要的是,它甚至可以让你用这些窗格做些聪明的事情,比如使用AJAX重新加载它们(定期或基于交互或事件),而无需重新加载整个页面。

0

部分类,ViewModels继承(即包含您不应该复制的公共逻辑的基本ViewModel),关注点分离(即使用服务层并且不要从ViewModel调用DB请求)等等。

这取决于你的实际代码,以及你的意思是“非常大”。你的问题实际上是模糊的。