User interface 如何为文本编辑器应用程序实现模型视图控制器设计?

User interface 如何为文本编辑器应用程序实现模型视图控制器设计?,user-interface,model-view-controller,jython,User Interface,Model View Controller,Jython,我正在开发一个文本编辑器,有点类似于Jython中的Emacs,尽管在这种情况下语言并不重要 我有一个独立的数据模型,菜单上有几个视图,文本区和控制台,在那里我可以显示日志消息并接收用户的命令,每个视图都有一个控制器。此外,我还有一个主控制器,它是应用程序的入口点,将所有视图放在一起并创建视图控制器 当用户与视图交互时,视图调用其控制器,控制器决定需要做什么。如果用户在菜单中选择显示“关于”弹出窗口的选项,菜单控制器将自行处理该选项。但是,如果菜单中有一个选项涉及另一个视图中的更改,例如当用户选

我正在开发一个文本编辑器,有点类似于Jython中的Emacs,尽管在这种情况下语言并不重要

我有一个独立的数据模型,菜单上有几个视图,文本区和控制台,在那里我可以显示日志消息并接收用户的命令,每个视图都有一个控制器。此外,我还有一个主控制器,它是应用程序的入口点,将所有视图放在一起并创建视图控制器

当用户与视图交互时,视图调用其控制器,控制器决定需要做什么。如果用户在菜单中选择显示“关于”弹出窗口的选项,菜单控制器将自行处理该选项。但是,如果菜单中有一个选项涉及另一个视图中的更改,例如当用户选择关闭文件时,则需要清除文本区域。在这种情况下,菜单控制器将操作委托给主控制器,而主控制器又指出文本区域控制器需要告知其视图以清除文本。比如:

1. User clicks "close file" in menu view
2. Menu view tells menu controller user selected "close file"
3. Menu controller delegates this actions to the Main controller since it has no access to the text area view.
4. Main controller tells text area controller to clear up text area
5. Text area controller clears up its view's text area.
我发现大多数用户操作不能由用户与之交互的视图的直接控制器处理,需要传递给主控制器,使主控制器成为一个巨大的类,而其他控制器只是委派操作

看来这不是最好的办法。我错过什么了吗?有更好的方法吗?我是否应该忘记中间控制器而重新考虑主控制器

如果您对此有任何见解,我们将不胜感激。

您的设计很好

您的主控制器就像J2EE设计术语中的FrontController(我的经验更多是使用Java)。前端控制器负责将传入的请求委托给适当的应用程序控制器(J2EE设计术语),您的设计中的一个例子是TextArea控制器

要全面了解FrontController和ApplicationController如何协同工作,请参阅本页的模式图

此外,您还可以阅读FrontController at和Application Controller at的详细信息


需要了解的基本情况是,FrontController就像应用程序的“主路由控制器”或元控制器,它将传入的请求路由到相应的应用程序控制器。

谢谢!这让人放心。