Web的MVC版本与传统的MVC不同吗?

时间:2009-04-10 02:41:37

标签: model-view-controller oop

我已经在网络上对MVC做了大量的工作,我们正在我的OOP课程中学习它。我看到了一些差异,我不知道是否因为Web版本的MVC模式与传统版本不同,或者我是否误解了它。

根据我的理解,模型(您的平面文件,RDBMS等)是一个通用的数据容纳对象。视图(浏览器,HTML等)是用户与之交互的内容,控制器在用户操作和数据之间进行调解。控制器是特定于域的部分,它管理视图,告诉模型它需要什么,并告诉视图要显示的内容。

在类中,我们将视图与我刚刚描述的视图相匹配,模型包含视图列表,以便在数据更改时可以更新它们,控制器只是将用户的操作映射到对模型的调用,并且特定对象(可能自己,要求模型更新视图)。最终发生的事情是,大多数业务逻辑都在模型中,并且它与正在编写的模拟或应用程序密切相关,而Controller则简化为命令和方法之间的映射工具。

您对此有何看法?

2 个答案:

答案 0 :(得分:3)

在非Web界面中,控制器处理来自键盘和鼠标之类的输入,选择要渲染的视图以及基于这些输入在模型中进行的更改。视图和模型可以更紧密地相关,因为视图可以直接向模型实体注册回调以通知更改,因此可以直接更改模型,而不是由控制器更新。

在网络世界中,视图必然会与模型脱钩。它必须通过控制器操作执行操作,因为它没有直接访问(在呈现并传递到浏览器之后)到模型。控制器在这种环境中扮演更重要的角色,即使它必须处理的唯一“输入”是浏览器请求。在某种意义上,以前在非Web MVC中与视图一起发生的耦合被转移到代表它的控制器。由于模型没有回调(现在让我们忘记“推送”技术),更多的业务代码被整合到控制器中,因为它是建模业务流程的自然场所,尽管可能不是验证。

答案 1 :(得分:0)

在我的理解中,Web MVC模式中的控制器只是模型和视图之间的桥梁,它们只是从模型中获取数据并将其传递给View。模型和视图独立,永远不会互相交谈。