在桌面应用程序上使用MVC实现GUI菜单

时间:2009-12-15 02:51:59

标签: model-view-controller user-interface

我正在使用python中的MVC模式实现模块化AI测试引擎。

到目前为止一切正常:AI,鼠标,键盘是控制器,模型是物理引擎,视图是渲染所有内容的pygame实例。我有一个事件处理程序来处理大多数通信。

现在,我想实现一个菜单系统(想象一下你可以选择加载,保存,退出等游戏菜单)。但是我被阻止了,我无法弄清楚应该如何实现它。问题是我认为它应该是部分控制器和部分视图,但我不确定。

有什么想法吗? 谢谢

1 个答案:

答案 0 :(得分:1)

首先,在谈论MVC时经常会忘记几点:

  1. 没有模式是教条。如果最好的解决方案不是MVC,那可能意味着MVC不适合这个问题。

    • MVC,GUI应用程序的OOD风格非常与MVC不同,MVC是Web应用程序的分层体系结构。在这种情况下,你需要第一个,关于第二个的许多文档和文章可能不是一个好建议。

    • 在'GUI-MVC'中,模型 - 视图 - 控制器三元组用于每个应用程序模块;没有'模型层','视图层'也没有'控制器层'。

  2. 现在,针对您的具体情况

    您可以将菜单系统视为一个额外的模块,独立于您现有的引擎。这个模块可以(如果你觉得方便的话)有它自己的MVC结构。模型可以是命令的列表(或树),视图是可见菜单,控制器可以是获取菜单事件并执行命令的调度程序。

    或者,整个菜单可以只是一个GUI控件;许多现有控制器之一。像任何GUI控件一样,它有一个可见的部分。如果你的基础库足够简单,那么用于实例化和管理菜单的代码可能太简单了,不值得复杂的内部结构。