Model view controller 模型视图控制器:谁通知视图
控制器接收用户输入。控制器操纵/编辑模型。 视图可以查询模型,以获取用于绘制的新状态。我不明白的是,到底是谁通知视图发生了变化?因为在原理图概述中,控制器似乎发送修改消息,并且模型还通知视图更改 即使在本例中,两者都会通知视图。如果控制器发送例如针的位置,为什么模型仍必须通知视图 [这些数字来自我们教授的幻灯片,因此它们是正确的]Model view controller 模型视图控制器:谁通知视图,model-view-controller,Model View Controller,控制器接收用户输入。控制器操纵/编辑模型。 视图可以查询模型,以获取用于绘制的新状态。我不明白的是,到底是谁通知视图发生了变化?因为在原理图概述中,控制器似乎发送修改消息,并且模型还通知视图更改 即使在本例中,两者都会通知视图。如果控制器发送例如针的位置,为什么模型仍必须通知视图 [这些数字来自我们教授的幻灯片,因此它们是正确的] 模型不必通知视图-在这种情况下,您将获得MVC的被动实现,请参阅 例如,模型可以计算背景中的某些内容,例如,它可以计算粒子系统中粒子的位置,并且可以在此处和此处通知
模型不必通知视图-在这种情况下,您将获得MVC的被动实现,请参阅 例如,模型可以计算背景中的某些内容,例如,它可以计算粒子系统中粒子的位置,并且可以在此处和此处通知视图进行自我更新,即推送模型,推送模型通常比从视图轮询模型更有效 例如,在WebSockets和Comet之前,总是Web视图通知控制器轮询模型并呈现新视图。使用WebSocket或Comet,您可以让控制器通知视图
在任何情况下,实现MVC都有无数的旋转,它不是一成不变的,当然你可以根据你的用例来调整它。它变得有点混乱,所以我在谷歌上搜索一些领先者的意见,因为Wikipedia和第一批热门文章并没有看上去那么好
- 型号。该模型管理应用程序域的行为和数据,响应有关其状态的信息请求(通常来自视图),并响应更改状态的指令(通常来自控制器)
- 查看。视图管理信息的显示
- 控制器。控制器解释用户的鼠标和键盘输入,通知模型和/或视图根据需要进行更改
->解释了这种情况。因此,这是一种选择,让视图轮询模型,模型直接通知视图,或者控制器更新模型->模型通知控制器->控制器通知视图,或者控制器更新模型->控制器轮询模型状态->控制器通知视图?是,有一系列的选择。例如,在WebSockets和Comet之前,总是Web视图通知控制器轮询模型并呈现新视图。使用WebSocket或Comet,您可以让控制器通知视图。也就是说,你的教授可能对这件事有更严格的看法。@Matthias,那不是MVC。你所描述的可能被称为MVP。@tereško所有四种选择?