我想使用MVC来构建我的Swing应用程序,但似乎存在冲突。
据我所知,MVC中,控制器应该处理输入并更新模型。模型应该通知观察者,其中视图是其中之一。
我有两个问题:
- Swing全部都是视图的一部分。组件拥有自己的模型是实现细节。我想把swing特定的代码从控制器/模型中分离出来,对吗?
- 我的控制器需要接收用户触发的事件,但这些事件来自于视图中的swing组件,而控制器不应该知道视图的存在。
我相信这个问题以前已经被解决了很多次,但我找不到一个真正的世界范例,它是一个基于MVC的Swing应用程序,规模还比较大。
更新-我忘记的一个问题
MVC不能直接提供各种MVC组件在应用程序层次结构中的结构。例如,主显示器可能有“销售”和“采购”选项卡,每个选项卡可能都有“新建”和“查询”面板。此外,可能会有一个“修改选定”按钮,该按钮将根据请求创建(可能是多个)窗口。
必须有一些东西在请求时为这些子组件创建模型、视图和控制器。它不能是控制器,因为控制器或模型不知道要创建哪个视图,也不应该是视图,因为它是应用程序逻辑,并且正在响应事件(这是控制器的工作)。
有答案吗?