首页 文章

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

提问于
浏览
0

我正在使用MVC模式创建一个pacman游戏 . 根据this diagram on wikipedia模型和视图相互作用 .

"Note: the solid lines indicate a direct association, and the dashed lines indicate an indirect association"

从我的理解,现在一切都通过控制器?比方说,玩家移动或用户点击添加到购物车,这是不是由控制器和控制器操纵的模型中的适当数据处理?

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

谢谢

亚当

3 回答

  • 0

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

  • 1

    不,视图从模型中读取数据(通常使用观察者模式) . PAC(presentation-abstraction-controller)是使用中介模式的基于MVC模式的一个很好的例子 - 控制器在视图和模型之间传递消息 .

  • 1

    确实很少有理由从您的视图中修改您的模型(这是一个禁忌),但您最终可能会从您的视图中访问(如在阅读中)模型 .

    我们来做一些伪代码 .

    假设你有 PlayerGame 型号 .

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

    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的哲学与一个程序员略有不同 . 有些人可能会建议使用observer pattern,具体取决于您的操作 . MVC的最终目标是将业务逻辑与用户界面分开,使您在进行维护和重构以及保持代码清洁时更轻松 .

相关问题