我在设计我正在尝试开发的应用程序的架构时遇到了一些麻烦。我正在研究 JAVA,我开始研究这个应用程序是因为我想加深我对 JAVA、体系结构和模式的整体了解。我想按照指南制作一个可重用、低耦合的应用程序,就像它应该的那样。应用程序只有一个 JFrame,但在其中有几个 JPanel,每个 JPanel 代表应用程序的一个模块。
问题是:在JAVA Swing中,如何实现一个合适的MVC模式?我挣扎于如何理解它应该做的方式。
我应该有一个主控制器类,它包含对所有其他控制器的引用吗?(我有一张图片来证明这一点:https ://docs.google.com/file/d/0B7tBdn5slIFeY2FoSmxESTREQ1k/edit?usp=sharing )
在这种情况下,是否所有需要更改正在呈现的模块的事件都重定向到主控制器?
还是我应该将 JFrame 与应用程序的控制器耦合,并直接与它们通信?
基本上,我想知道我是否需要一个“管理”所有其他人的课程。我已经阅读了一些解释和不同的意见,但我相信这更具体一点。
希望我已经把自己说清楚了(也希望我的解释比我的画更好:))。
编辑: 应用程序使用示例:
- 一个(唯一一个)JFrame,贯穿应用程序的整个生命周期;
- 菜单将在左侧,如 BorderLayout.WEST;
- 应用程序的当前模块将位于中心,如 BorderLayout.CENTER;
- 当用户按下菜单的一个按钮时,相应的模块被加载到BorderLayout.CENTER中;
菜单(视图)是否应该有它自己的控制器,并且这个控制器与 JFrame 通信?JFrame 将新模块加载到它的布局中吗?或者 JFrame 应该有自己的控制器(或模型,如 Gilbert Le Blanc 所说)?
我知道这可能看起来很具体,或者很容易理解,但是每次我想到桌面应用程序时,我都很难理解这一点。