我非常了解 MVC(至少我认为我知道)并且我已经使用这种方法开发了很多应用程序。不过有一件事让我很烦恼:
在我看到的每个模型图中,它被绘制为一个三角形,控制器和视图/模型之间有直接连接,但视图和模型之间也有连接(即模型和视图直接说话,中间没有控制器)。
在我作为开发人员的所有这些年里,模型和视图之间总是完全分离,控制器充当中间人,据我所知,这也是最佳实践。
那么在什么情况下我希望模型直接与视图对话?你能给我一个简单的例子吗?
我非常了解 MVC(至少我认为我知道)并且我已经使用这种方法开发了很多应用程序。不过有一件事让我很烦恼:
在我看到的每个模型图中,它被绘制为一个三角形,控制器和视图/模型之间有直接连接,但视图和模型之间也有连接(即模型和视图直接说话,中间没有控制器)。
在我作为开发人员的所有这些年里,模型和视图之间总是完全分离,控制器充当中间人,据我所知,这也是最佳实践。
那么在什么情况下我希望模型直接与视图对话?你能给我一个简单的例子吗?
模型不与视图对话。但是视图显示模型中包含的数据,并从模型中调用方法来显示它们。这可能就是您的图表中它们之间存在链接的原因:
一些带有“监督控制器”的 Model-View-Presenter 设计模式允许直接从 Model 更新 View,用于简单的数据绑定任务:
http://msdn.microsoft.com/en-us/library/ff647543.aspx
还有 ModelView - ViewModel 模式,但它与 MVC 类似,只是将 Controller 逻辑移至 View。一些 WPF 应用程序使用 MV-VM 从数据源快速更新 UI:
但是这两种替代方案(MVP w/Supervising C 和 MV-VM)实际上只是 MVC 的变体。