2009-12-15 74 views
0

我在Python中使用MVC模式实现模块化AI测试引擎。在桌面应用程序中使用MVC实现GUI菜单

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

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

任何想法? 谢谢

回答

1

首先,有几点谈论MVC的时候,人们常常忘记:

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

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

    • 在'GUI-MVC'中,Model-View-Controller三元组针对每个应用程序模块;没有“模型层”,“视图层”和“控制器层”。

现在,您的具体情况

你可以看到菜单系统作为额外的模块,独立于现有的引擎。这个模块可以(如果你觉得方便)拥有自己的MVC结构。该模型可以是命令的列表(或树),视图是可见的菜单,控制器可以是获取菜单事件并执行命令的调度器。或者,整个菜单可以只是一个GUI控件;许多现有的控制器之一。像任何GUI控件一样,它有一个可见的部分。如果您的基础库足够简单,则用于安装和管理菜单的代码可能过于简单,不值得使用复杂的内部结构。

+0

我喜欢将菜单系统作为额外模块的想法。我太受Web应用程序视图的影响。但即使如此,我已经注意到需要拥有自己的模型 - 视图 - 控制器结构的模块。 我将整个应用程序分为MVC的主要原因是我可以独立于模型和控制器层而取代未来的视图。正如你在1中所说的,我不应该试图强制应用程序进入模式。 谢谢你的回答。 – Ezequiel

相关问题