【发布时间】:2013-11-29 04:20:02
【问题描述】:
我正在使用 gui 控制台进行文本冒险。我现在设置了它,以便用户使用视图输入文本(例如“检查键”、“环顾四周”等)。然后使用侦听器将这些数据从视图发送到控制器。将文本发送到控制器后,我有点卡住了。遵循 MVC 模型,我应该将文本从控制器发送到模型并让模型解析它并弄清楚如何处理它,还是模型应该只是控制器解析数据的一种“存储” ,只是告诉模型基本命令?例如,如果“pickup key”被发送到控制器,控制器应该告诉模型简单地将钥匙添加到玩家库存并将其从房间中移除,还是应该将整个文本发送到模型进行处理?
我知道这是一个非常基本的 MVC 问题,即使在阅读了相当多的内容并查看了一些解释模型的流程图之后,我仍然对 MVC 的每个部分的具体角色感到困惑。
【问题讨论】:
-
模型应该有程序的大脑。试着想想如果这个程序是一个基于文本的游戏、一个 Swing GUI、一个智能手机游戏、一个基于互联网的游戏,它的不变性是什么。在所有这些情况下都不会改变的东西很可能在模型中。
-
@HovercraftFullOfEels 所以控制器只是在模型和视图之间传递数据,但从未真正接触过数据?它只是介于两者之间的一层,允许分别测试和/或使扩展更容易?
-
好吧,这取决于,有时模型不能做所有事情,例如,如果一个动作依赖于一个旧动作,我相信类 Action 不能拥有所有的逻辑,或者如果一个动作取决于另一个玩家在网络上抛出的动作:网络代码不会在模型中。
-
@HovercraftFullOfEels 是正确的;正如here 所讨论的,Swing MVC 是以模型为中心的。
标签: java swing model-view-controller