我正在尝试学习 MVC 模式,但每个地方都有不同的说法。所以现在我不知道真正的 MVC 是什么。
所以我猜它是最纯粹的MVC:
- 模型只是数据并通知数据更改。
- View读取Model的消息以更新视图。
- 控制器从视图中读取用户输入并据此更改模型。
实施
- 模型不认识任何人。
- View知道Model。
- Controller知道View和Model。
伪代码:
/* Model */
class Color{
color = blue;
setColor(color);
notifyUpdate();
}
/* View */
class ColorPicker(model){
model.register(update);
update(){
this.colorToExhibit = model.color;
}
}
/* Controller */
class Colorize(view, model){
view.register(update);
update(color){
model.setColor(color);
}
}
一些问题:
- 那正确吗?
- 我不明白为什么视图不能直接更改模型,而是通过控制器。
- 假设我有一个动作后要执行的动画。谁必须处理这个动画:模型、视图还是控制器?另外:动画逻辑是模型、视图还是控制器的一部分?更多:假设一个扑克游戏。在用户选择一个动作(例如,“Raise”)后,系统必须播放动画(例如,筹码从玩家位置到桌子)。如何将这个扑克示例(带有动画)视为 MVC?你能解释一下并给出一个伪代码吗?
谢谢你。