我正在尝试学习MVC模式,但是每个地方都说不一样的话。所以现在我不知道什么才是真正的MVC。
因此,我猜想它应该是最纯粹的MVC:
- Model只是数据并通知数据更改。
- View从Model读取消息以更新视图。
- Controller从View读取用户输入并相应地更改Model。
实现
- 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);
}
}
一些问题:
- 那是正确的吗?
- 我不明白为什么View不能直接改变Model,而要通过Controller。
- 假设我有动画需要在操作后执行。谁必须处理这个动画:Model、View还是Controller?此外:动画逻辑是Model、View还是Controller的一部分?更多:假设一个扑克游戏。用户选择一个动作(比如,“加注”)之后,系统必须播放一个动画(比如,筹码从玩家位置到桌子上)。如何将这个带有动画的扑克示例视为MVC?你能解释一下并给出一个伪代码吗?
谢谢。