【问题标题】:MVC : Should this function be in the Controller or in the ModelMVC : 这个函数应该在 Controller 中还是在 Model 中
【发布时间】:2014-12-28 13:58:40
【问题描述】:
我想制作一个基于 MVC 模式的简单游戏。游戏是一个网格,玩家可以在其中交换相邻单元格。
我的问题是:
我应该检查单元格是控制器还是模型中的邻居?
我会说我应该在模型中有一个swapCells(cell1, cell2) 函数,并且控制器应该检查两个单元格是否是邻居(因为交换邻居单元格的能力在我的脑海中听起来更像是一种权限,而不是与数据)。但我不能确定。
谢谢。
【问题讨论】:
标签:
java
model-view-controller
model
controller
【解决方案1】:
应在控制器中检查用户操作是否有效,因此如果您要实现swapCells(cell1, cell2),则应在控制器中检查两个单元格是否为邻居。
但是,在这种情况下,可以完全避免对相邻单元格的验证:与其将两个单元格传递给模型,不如将一个单元格和一个方向传递给它的邻居:
enum DirectionToNeighbor {
NORTH, EAST, SOUTH, WEST
}
...
swapCells(originCell, directionToNeighbor)
现在控制器不需要检查这两个单元格是否是邻居,因为第二个单元格是隐式指定的。它只需要检查源单元格不在directionToNeighbor一侧的边界上(即如果directionToNeighbor是NORTH,则单元格不能在北边界上;如果方向是WEST , 不能在西部边界,以此类推)。