在Java中将逻辑与设计分离

时间:2011-12-09 20:41:15

标签: java model-view-controller

如果我要制作单窗口Java程序,我发现自己做了类似下面的事情。请注意,我倾向于做类似iOS开发的事情。

+-------------------------------------------------------------------------------+
|                                                                               |
|      ExampleJFrame.java              ExampleJPanel.java                       |
|              |                               |                                |
| ExampleJFrameController.java -> ExampleJPanelController.java -> Component(s)  |
|                                                                               |
+-------------------------------------------------------------------------------+

我喜欢iOS标准,并希望遵循这一点。这是我能得到的最接近的。我的问题是,如果我使用JFrame进行简单的操作,例如添加JPanel,设置标题,位置,大小等,我应该(1)将JFrame子类放在哪里我只有ExampleJFrame并让对象自己做上述事情或者(2)我应该只有ExampleJFrameController来创建一个新的JFrame并设置它的标题和诸如此类的东西?

修改

使用第二个选项,如果我想要子类ExampleJFrameController,则父对象会将JFrame的可见性设置为true,然后子对象才能对其执行任何操作。所以也许我忘了添加一个选项3(“图形”有点隐含):同时包含ExampleJFrameExampleJFrameControllerExampleJFrame would set its own size and location and title and {ExampleJFrameController {1}} {ExampleJFrame {1}} {ExampleJPanel {1}} {ExampleJFrameController {1}} {ExampleJPanelController {1}} {ExampleJPanelController {1}} ExampleJPanel`?或者我错过了一些可以解决这个问题的细节?

2 个答案:

答案 0 :(得分:2)

我认为选项2是最好的,因为您可以更轻松地管理它。此外,您还可以创建新的Controller,而无需创建全新的JFrame。这将保留内存,并使程序功能更有效。

答案 1 :(得分:2)

我会使用第二种选择。

分离Java代码可能看起来非常好而且整洁,但在设计Java对象时变得太​​复杂了。你最终会拥有数十个文件,可以很容易地在3或4中完成。

如果您使用第一个选项,每次要创建新的JFrame时,最终都会创建一个新的控制器。使用第二个选项,您只需在现有控制器类中添加一个新对象。