【问题标题】: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一侧的边界上(即如果directionToNeighborNORTH,则单元格不能在北边界上;如果方向是WEST , 不能在西部边界,以此类推)。

    【讨论】:

      猜你喜欢
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2016-03-03
      • 2011-10-24
      相关资源
      最近更新 更多