在MVC模式中,Model可以交互/修改View吗?

wp4*_*p42 2 java model-view-controller design-patterns software-design

在维基百科上以这种方式描述MVC模式组件交互:

该模型负责管理应用程序的数据.它从控制器接收用户输入.视图意味着以特定格式呈现模型.控制器响应用户输入并对数据模型对象执行交互.控制器接收输入,可选地验证它,然后将输入传递给模型.

我知道View应该无法与Model交互.但是在我在网上找到的大多数图表中,MVC表示如下:

在此输入图像描述

我们可以看到Model 确实 与View交互并且能够修改它,并且它没有意义.模型是否更新Controller,更新View

我错过了什么?

jac*_*646 5

MVC架构创建于20世纪70年代.显然当时没有互联网.在原始版本中,模型直接通过数据绑定更新View ,也称为发布/订阅,也称为观察者模式.

Gang of Four Design Patterns一书详细描述了这个MVC架构.这本书的几个引用在这里是另一个答案.

MVC架构非常受欢迎,当互联网出现时,开发人员希望继续使用它; 但它并不适合客户端/服务器应用程序.因此诞生了"WebMVC",这是你今天最常见的版本.WebMVC通常实现为分层体系结构,而原始设计不是.

当两个架构混合在一起时,就会出现混乱.通常两者都简称为MVC.更糟糕的是,诸如MVP和MVVM之类的相关架构可以称为MVC.

就个人而言,我发现桌面MVC和Web MVC之间的关系有点像Java和JavaScript之间的关系.后者捎带着前者的着名名称,以实现一些显着不同的东西.

相关:视图不与模型交互时是MVC吗?