带选项卡的MVC(链接gui和数据类)

时间:2014-01-19 08:17:09

标签: java swing model-view-controller

我正在计划使用将遵循MVC设计的摇摆的石头剪刀“游戏”。这样做的目的是为了更多地了解MVC如何工作,而不是有用/功能。我现在的设计有一个允许用户创建新游戏的表单,然后游戏出现在JTabbedPane中,这样用户可以一次运行多个游戏。我有2个关于这个系统的问题:

是否应该在模型中处理岩石剪刀逻辑,还是应该在控制器中处理逻辑?我有一个代表不同选择的枚举和一个算法来找出谁赢了,但我对实际应该处理的地方感到有点困惑。

我的第二个问题可能有点令人困惑。我现在计划好的方式是我有一个名为GamePanel的JPanel,每个游戏都有一个作为TabbedPane中的标签。将我的GamePanel链接到来自模型的游戏数据的“正确”方法是什么?在最简单的情况下,每个游戏都有一个GamePanel和一个用于存储数据的Game对象。在控制器中将这些链接在一起的正确方法是什么,以便通过事件系统我可以轻松地获取用户输入并根据它修改正确的游戏?我想到的第一件事就是HashMap(GamePanel,Game),但这看起来并不是很优雅。

1 个答案:

答案 0 :(得分:1)

  

是否应在模型中处理石头剪刀逻辑,或者是否应在控制器中处理逻辑?

Swing中MVC逻辑的一个问题是代码所在的位置并不总是代码执行的地方。

摇滚/纸/剪刀逻辑将作为控制器的一部分执行。代码更可能存在于模型类中,因为这样可以找到玩家选择摇滚,纸张或剪刀的值。

  

将我的GamePanel链接到来自模型的游戏数据的“正确”方法是什么?

您将拥有每个活动游戏的游戏数据实例。您可以将它们存储在列表中,因为游戏的顺序很重要。您的列表将在另一个模型类中定义,比如说AllGames。会有一个AllGames实例,它将被传递给你的Swing类,供他们用来检索游戏值。

看一下这篇文章Dice Game,看看如何在更精细的游戏中使用MVC架构。