ViewModels是否适合模型视图Presenter模式?

时间:2010-06-16 07:39:31

标签: design-patterns mvp viewmodel

在MVC中使用了ViewModels,我想知道是否将相同的应用于MVP模式是切实可行的。我只有一些考虑因素,一个是MVP已经相当难以实现(所有额外的编码,看似复杂性不多)或者ViewModel已经有一种类似的建模数据或实体的方式。以ViewModel的形式添加另一个层是多余的还是一个逻辑抽象我作为一个实现MVP模式的人应该坚持?

2 个答案:

答案 0 :(得分:3)

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

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

我在一个体面的公众面向asp.net Web应用程序上工作,但以下适用于WinForms中的MVP。以下是我发现在MVP中使用VM的原因。

该网站汇总了大量LOB网络服务的数据。这些服务由不同业务部门的各个开发团队维护。回来的数据就是:

  • 类型汤 - 将GUID存储为字符串,返回双精度而不是小数,将日期作为字符串等等。
  • 疯狂命名约定 - Camel案例属性,名称中的下划线,缩写jumbles

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

就我们所做的改变而言,我们必须:

  • 在“视图和演示者(控制器)”文件夹
  • 旁边创建一个新的ViewModels文件夹
  • 将模型值映射到视图模型
  • 将视图界面上的属性从模型类型更改为视图模型类型
  • 根据新对象实施视图

唯一耗费时间的部分当然是将模型映射到视图模型。在我们的例子中,我们被迫在我们的演示者中进行了大量的处理,以获得我们需要的数据,分配属性并不是什么大问题。对于更简单的需求,像AutoMapper这样的东西会消除映射的痛苦。

答案 1 :(得分:0)

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