我想制作一个依靠MVC模式的简单游戏。该游戏是一个网格,玩家可以在其中交换相邻的单元格。
我的问题是:
Should I check that the cells are neighbors in the Controller or in the Model ?
我想说我应该在模型中有一个 swapCells(cell1, cell2)
函数,并且 Controller 应该检查两个单元是否是邻居(因为交换邻居单元的能力在我的脑海中听起来更像是一种许可,而不是与数据相关的东西)。但我还不能确定。
谢谢。
最佳答案
检查用户操作是否有效应在 Controller 中完成,因此,如果要实现 swapCells(cell1, cell2)
,则应在 Controller 中检查相邻的两个单元格。
但是,在这种情况下,可以完全避免相邻单元格的验证:不是将两个单元格传递给模型,而是传递一个单元格以及到其邻居的方向:
enum DirectionToNeighbor {
NORTH, EAST, SOUTH, WEST
}
...
swapCells(originCell, directionToNeighbor)
现在 Controller 不需要检查两个单元格是否是邻居,因为第二个单元格是隐式指定的。它需要检查的是源单元格不在 directionToNeighbor
一侧的边界上(即,如果 directionToNeighbor
为 NORTH
,则该单元格不得位于北边界;如果方向为 WEST
,则它不得位于西边界上,依此类推)。
关于java - MVC : Should this function be in the Controller or in the Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26688375/