2010-01-09 59 views
3

我认为MVP中由M表示的'Model'可能是领域模型还是演示/视图模型?Models in Model View演示者MVP

+0

你的意思是MVC? – 2010-01-09 10:36:46

+0

@Jan我的意思是MVP。我的问题有问题吗?可能有些缺乏理解。 – David 2010-01-09 10:42:03

回答

7

是的,模型本质上可以是任何模型。我看到它的方式,MVC的初衷是它是一个域对象,而且这当然还是有可能的。

但是,我的经验表明,如果我们引入专门的ViewModel/Presentation Model作为领域模型和视图之间的绝缘,就会达到更好的契合度。

即使ViewModel似乎与Domain Object在语义上相同,这样的绝缘使我们能够独立地改变两个,因此遵循Single Responsibility Principle

通常情况下,View需要一些适用于特定UI技术的逻辑,而且这种逻辑非常适合于领域模型。示例包括:

  • 确定是否应启用或禁用特定控件的逻辑。领域模型应该对控件一无所知。
  • 将状态映射到颜色的逻辑。颜色是特定于技术的 - 它们是Windows窗体,WPF和ASP.NET中不同的CLR类型。
  • 验证。输入表单通常允许输入无效数据而不会抛出异常。相反,他们向用户提供数据无效的反馈。另一方面,域对象应该保护它们的不变量,从而导致无效输入。

更多信息可以在这里找到

+0

感谢您的好解释。我的意图是让控制器查询域和助手(某种映射器/汇编器)构建一个演示文稿特定的视图模型,您是否同意这种方法是正确的? – David 2010-01-09 11:36:13

+0

是的,命中领域模型以检索您需要的任何内容,使用映射器映射到ViewModel,并使用该ViewModel呈现视图。这基本上就是我所做的。 – 2010-01-09 12:10:21

+0

再次感谢马克。关于这个问题,我还会提出其他一些问题,我会提出并感谢您的意见。 – David 2010-01-09 12:15:44

相关问题