2010-06-16 61 views
3

在MVC中使用ViewModels之后,我想知道是否将相同的MVP模式应用于实际。我只有几个考虑因素,一个是MVP已经相当难以实现(所有附加的编码,看起来并不复杂),或者ViewModels已经有一些类似的数据或实体建模方法。以ViewModel的形式添加另一个层是多余的还是逻辑抽象,作为实现MVP模式的一员,我应该坚持?ViewModels是否适合模型视图展示器模式?

回答

3

ViewModels在MVP中可能非常有用,我认为增加更多的好处额外的编码。

我认为指导原则是在需要它们的地方使用它们,而不是简单地为他们自己添加更多模式或架构。

我在一个体面大小的面向公共的asp.net web应用程序上工作,但以下内容也适用于WinForms中的MVP。以下是我发现在MVP中使用虚拟机的原因。

该网站汇总了大量LOB网络服务的数据。这些服务由不同业务领域的各种开发团队维护。回来的数据是所有的地方在以下方面:

  • 类型汤 - 存储的GUID为字符串,返回双打,而不是小数,日期为字符串,等等
  • 疯狂的命名约定 - 骆驼情况下的特性,下划线在名称中,缩写jumbbles

但是我发现使用它的最大原因是提供的模型与MVC中的模型相同:模型不符合视图的形状。我们正在结合模型类,并增加额外的字段计算或汇总值等

在变化方面我们做了我们必须:

  • 创建沿边一个新的ViewModels文件夹视图和主持人(控制器)夹
  • 地图的模型值来视图模型
  • 变化从一个模型类型的图模型类型
  • 视图接口上的属性根据新的对象实现视图

其中唯一耗费时间的部分自然是模型到视图模型的映射。在我们的案例中,我们不得不在我们的演示者中进行大量处理,以获取我们需要的数据,分配属性并不是什么大不了的事情。对于更简单的需求,像AutoMapper会消除这种映射的痛苦。

+0

几个月的试验和错误让我想到了在每个案例的基础上使用虚拟机。它在包装模型方面确实简化了大量工作,因此可以轻松调整更改。不过,我使用它们作为包装来简化事情。 – Jonn 2010-09-07 01:57:40

0

发现一个MVPVM的实现与我想要做的相似。 (当我实现它时发现它非常复杂,很多重复的工作,用代码生成工具可能会更好)

相关问题