需要对MVC模式进行一些澄清

时间:2012-07-12 08:56:38

标签: model-view-controller

我非常了解MVC(至少我认为我这样做)并且我使用这种方法开发了很多应用程序。但有一件事让我感到困惑:

在我看到的模型的每个图表中,它被绘制为一个三角形,控制器和视图/模型之间有直接连接,但也是视图和模型之间的连接(即模型和视图直接说话而没有控制器在中间)。

在我作为开发人员的这些年里,模型和视图之间始终存在完全的分离,控制器充当中间人,据我所知,这也是最佳实践。

那么在什么情况下我希望模型直接与视图对话?你能给我一个简单的例子吗?

2 个答案:

答案 0 :(得分:1)

该模型不与视图对话。但视图显示模型中包含的数据,并从模型中调用方法以显示它们。这可能就是为什么你的图表中它们之间存在联系的原因:

  1. controller从数据库中获取模型(通过服务层)并将其存储在请求中
  2. 控制器调度到适当的视图
  3. view从模型中获取数据并生成HTML

答案 1 :(得分:1)

使用“监督控制器”的一些Model-View-Presenter设计模式允许直接从模型更新视图,以进行简单的数据绑定任务:

http://msdn.microsoft.com/en-us/library/ff647543.aspx

还有ModelView - ViewModel模式,但它与MVC相同,只是将Controller逻辑移动到View。一些WPF应用程序使用MV-VM从数据源进行快速UI更新:

http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/

但两种替代方案(MVP w / Supervising C和MV-VM)实际上只是MVC的变种。