Model view controller 控制器是否在MVC中处理与模型的所有交互?

Model view controller 控制器是否在MVC中处理与模型的所有交互?,model-view-controller,Model View Controller,我正在使用MVC模式创建一个pacman游戏。根据模型和视图进行交互 注意:实线表示直接关联,虚线表示间接关联 现在据我所知,一切都通过控制器了吗?例如,玩家移动或用户单击“添加到购物车”,控制器是否会处理这些操作,以及控制器操纵的模型中的相应数据 我不明白为什么视图会直接与模型交互 谢谢 Adam视图从模型中获取它应该显示的数据。(例如:购物车中的物品列表)确实,从视图中修改模型的理由很少(没有),但您最终可能会从视图中访问(如读取)模型 让我们做一些伪代码 假设你有一个玩家和一个游戏模型 您

我正在使用MVC模式创建一个pacman游戏。根据模型和视图进行交互

注意:实线表示直接关联,虚线表示间接关联

现在据我所知,一切都通过控制器了吗?例如,玩家移动或用户单击“添加到购物车”,控制器是否会处理这些操作,以及控制器操纵的模型中的相应数据

我不明白为什么视图会直接与模型交互

谢谢


Adam

视图从模型中获取它应该显示的数据。(例如:购物车中的物品列表)

确实,从视图中修改模型的理由很少(没有),但您最终可能会从视图中访问(如读取)模型

让我们做一些伪代码

假设你有一个
玩家
和一个
游戏
模型

您的控制器可能会执行以下操作:

player1 = new Player();
player1.setLives(3);
player1.setScore(0);
player1.setPosition(0, 0);
game = new Game();
game.addPlayer(player1);
game.launch();
foreach (game.getPlayers() as player) {
   gameBoard.draw(pacmanGlyh, player.getPosition());
}
然后,您的视图可能会执行以下操作:

player1 = new Player();
player1.setLives(3);
player1.setScore(0);
player1.setPosition(0, 0);
game = new Game();
game.addPlayer(player1);
game.launch();
foreach (game.getPlayers() as player) {
   gameBoard.draw(pacmanGlyh, player.getPosition());
}
您可以从视图中看到您正在使用模型


但请记住,不同程序员之间关于如何实现MVC的理念略有不同。有些人可能会建议根据您的工作内容使用。MVC的最终目标实际上是将您的业务逻辑从用户界面中分离出来,使您在进行维护和重构以及保持代码干净时的生活更加轻松。

不,视图从模型中读取数据(通常使用观察者模式)。PAC(表示抽象控制器)是基于MVC的模式的一个很好的例子,它使用中介模式——控制器在视图和模型之间传递消息