MVC:此功能应该在Controller中还是在Model中

时间:2014-11-01 10:34:37

标签: java model-view-controller model controller

我想依靠MVC模式制作一个简单的游戏。游戏是一个网格,玩家可以在其上交换邻居单元格。

我的问题是:

  

我应该检查控制器或模型中的单元是否是邻居?

我会说我应该在Model中有一个swapCells(cell1, cell2)函数,并且Controller应该检查这两个单元格是否是邻居(因为交换邻居单元格的能力听起来像是一个许可而不是某些东西与数据有关)。但我无法确定它。

谢谢。

1 个答案:

答案 0 :(得分:1)

检查用户操作是否有效应该在控制器中完成,因此如果要实现swapCells(cell1, cell2),则应该在控制器中检查作为邻居的两个单元格。

然而,在这种情况下,可以完全避免相邻小区的验证:而不是将两个小区传递给模型,传递一个小区,并将方向传递给其邻居:

enum DirectionToNeighbor {
    NORTH, EAST, SOUTH, WEST
}
...
swapCells(originCell, directionToNeighbor)

现在控制器不需要检查两个单元是否是邻居,因为隐式指定了第二个单元。需要检查的是,原始单元格不在directionToNeighbor一侧的边界上(即如果directionToNeighborNORTH,则单元格不得位于北部边界;如果方向是WEST,它不能在西边界,依此类推。)