背景:
我在web应用程序方面有着丰富的经验,但我对RCP的经验很少或根本没有。目前,我正在使用JavaSwingneneneba API。一切都很好。唯一的问题是,我对自己的设计没有信心。
问题:
在web应用程序中,当我们实现MVC时,我们将请求转发到View
。Controller
不关心在哪里显示。通常情况下,所有内容都会显示在页面上。但是在RCP中,我们需要知道在哪里显示这个表单/表等。。我指的是哪个面板,右边还是左边,向上还是向下。这需要引用一个容器组件,我们希望在其中显示该内容。我们应该如何设计代码以获得该引用?
Take:
我保留了对主类中所有一级组件的引用,该类具有main()
方法。然后,无论我在哪里需要一些组件,我都会做一些类似的事情
JPanel formPanel = MainApp.getMainPanel().getFormPanel();
..
JPanel treePanel = MainApp.getMainPanel().getTreePanel();
没事吧?
MVC在RCP中并不是一个真正的东西,人们谈论它,但在很大程度上它是胡说八道。
当然,拥有一个独立的、不依赖任何UI代码的业务对象模型是很重要的。但是视图和控制器之间的线往往更模糊,我不会太担心。
用户界面元素自然倾向于像您现有的那样组织在树中,尽管应该避免使用全局变量(如主面板(。
严重依赖观察者模式。
Swing架构概述详细阐述了Swing的可分离模型架构。我发现这个概念有助于理解常用的Swing组件,以及像JFreeChart
这样的流行工具。