MVC组件责任,需要澄清

时间:2011-12-19 15:31:53

标签: model-view-controller

我正在制作纸牌游戏,还有一个UIView班级,负责展示游戏板的视图。

作为呈现视图的任务的一部分,类需要执行一系列任务,如

  • 从甲板上铺设卡片
  • 更新卡片布局以响应用户,计算机或用户的移动

但我想知道,我的观点应该在多大程度上了解卡片组?例如,我的View是否保持指向它所绘制的Deck的指针?

3 个答案:

答案 0 :(得分:2)

对于MVC,View应该只知道正确进行布局所需的信息。控制器应该给它这个数据,并告诉视图何时需要更新自己(更多地取决于特定的MVC框架,但总的来说,这是真的)。​​

所以,如果你的视图需要知道整个Deck来做布局,那么是的,但这对我来说听起来很奇怪。我认为,至多,视图只需知道牌组中当前的牌数,但我不知道所有纸牌游戏。

对于我能想到的几款纸牌游戏,需要在纸板上各个位置进行的卡片列表,以及其他位置的一些卡片数量可能都是视图需要知道的。控制器负责填充列表(决定哪些卡需要在哪些地方显示),视图只代表它。

通常,所有View都表示应用程序的状态(在本例中为当前的板状态),而不是其他任何内容。除了表示完整应用程序状态的子集之外,它没有任何逻辑与任何内容相关。在你的情况下,如果View有任何逻辑与决定哪些像素显示在哪里有关,那就太多了。

答案 1 :(得分:1)

查看不知道是哪一副牌。模型是大脑,它知道一切。查看刚刚获得DummyCard,可以简单枚举确定卡的颜色和形状。它知道如何绘制它。所以,你可以告诉视图“画我黑桃王牌”就是这样。 DummyCard是您的卡的简化版本。这没有逻辑。当您想重绘游戏状态时,将复制(虚拟)对象传递给视图并绘制它。

答案 2 :(得分:1)

您可能缺少抽象。不仅要考虑建模中的棋盘和牌,还要考虑拾取和弃牌。然后你只需要处理初始化,甲板模型将对此有所帮助。