【问题标题】:Models In Model View Presenter MVPModel View Presenter MVP 中的模型
【发布时间】:2010-01-09 18:58:33
【问题描述】:

我认为 MVP 中的 M 表示的“模型”可能是域模型或表示/视图模型是否正确?

【问题讨论】:

  • @Jan 我的意思是 MVP。我的问题有问题吗?可能有些缺乏理解。

标签: design-patterns mvp


【解决方案1】:

是的,模型基本上可以是任何模型。在我看来,MVC 的初衷是它是一个域对象,这当然是可能的。

但是,我的经验表明,如果我们引入一个专门的 ViewModel/Presentation Model 作为域模型和视图之间的隔离,可以实现更好的匹配。

即使 ViewModel 在语义上似乎与域对象相同,这种隔离使我们能够独立地改变两者,从而遵循Single Responsibility Principle

事实证明,View 需要一些适用于特定 UI 技术的逻辑,而这种逻辑很不适合 Domain Model。例子包括

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

更多信息可以在这里找到

【讨论】:

  • 感谢您的精彩解释。我的意图是让控制器查询域并且帮助器(某种映射器/组装器)构建特定于演示文稿的视图模型,你同意这种方法是正确的吗?
  • 是的,点击域模型检索您需要的任何内容,使用 Mapper 映射到 ViewModel,并使用该 ViewModel 渲染视图。这基本上也是我所做的。
  • 再次感谢马克。关于这个主题,我还有其他一些问题要提出,希望您能提供意见。
猜你喜欢
  • 1970-01-01
  • 2014-04-29
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
相关资源
最近更新 更多