java - MVC : Should this function be in the Controller or in the Model

标签 java model-view-controller model controller

我想制作一个依靠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 一侧的边界上(即,如果 directionToNeighborNORTH,则该单元格不得位于北边界;如果方向为 WEST,则它不得位于西边界上,依此类推)。

关于java - MVC : Should this function be in the Controller or in the Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26688375/

相关文章:

zend-framework - 在 Zend Framework 中初始化模型

javascript - Angular 模型仅在 console.log() 之后更新

java - java服务器信息中的postgres

c# - 自定义数据注释和客户端验证 MVC2

java - 如何在 Struts 2 中使用 View ?

php - 在 MVC 架构中记录数据库错误的位置

java - 如何使用 selenium 2.0 (webdriver) 处理窗口弹出窗口?

java - 是什么导致java以不同的方式对待ArrayList和Integers这两种对象类型?

Java.util.HashMap —— 为什么 HashMap 扩展 AbstractMap 并实现 Map?

ruby-on-rails - Rails_admin 多图片上传?