我正在使用MVC模式创建一个pacman游戏 . 根据this diagram on wikipedia模型和视图相互作用 .
"Note: the solid lines indicate a direct association, and the dashed lines indicate an indirect association"
从我的理解,现在一切都通过控制器?比方说,玩家移动或用户点击添加到购物车,这是不是由控制器和控制器操纵的模型中的适当数据处理?
我不明白为什么视图会直接与模型交互?
谢谢
亚当
3 回答
视图获取应从模型中显示的数据 . (例如:购物车中的商品列表)
不,视图从模型中读取数据(通常使用观察者模式) . PAC(presentation-abstraction-controller)是使用中介模式的基于MVC模式的一个很好的例子 - 控制器在视图和模型之间传递消息 .
确实很少有理由从您的视图中修改您的模型(这是一个禁忌),但您最终可能会从您的视图中访问(如在阅读中)模型 .
我们来做一些伪代码 .
假设你有
Player
和Game
型号 .您的控制器可能执行以下操作:
然后,您的视图可能会执行以下操作:
您看到您正在使用视图中的模型 .
但请记住,关于如何实现MVC的哲学与一个程序员略有不同 . 有些人可能会建议使用observer pattern,具体取决于您的操作 . MVC的最终目标是将业务逻辑与用户界面分开,使您在进行维护和重构以及保持代码清洁时更轻松 .