寻找适合此应用程序的GUI设计模式

时间:2016-11-06 16:57:56

标签: java swing user-interface design-patterns

我正在开发一个用于学校项目的java桌面应用程序,我想知道我应该如何设计GUI代码,特别是因为我以后必须在应用程序上运行JUnit和功能测试。我知道这听起来像是一个基于意见的问题,但我不是要求“最好”的方法,我只是想指出一个特定的设计模式,可以满足我的应用程序的需要。

为了详细说明应用程序的类型,它是“基于阶段的”,一个按钮指向应用程序的不同部分。一个主窗口,只有错误或警告弹出窗口(只有一帧)。

到目前为止我目前的做法:
到目前为止,我已经使用eclipse的WindowBuilder(主菜单,管理菜单和用户菜单)和一个AppGUI类设计了3个不同的JPanel类,该类使用CardLayout布局创建并清空框架,并用3个面板中的一个填充它(从主菜单开始)。然后这些面板上的按钮指向下一个面板。 (例如,主菜单 - >用户菜单 - >创建个人资料)
面板需要与AppGUI实例进行通信,以便执行面板更改,然后再执行其他选项将具有的功能。为此,我在初始化时将AppGUI实例作为参数传递给面板并将其存储在每个面板中(我首先考虑使用单例AppGUI并对其进行静态引用,但后来我读到它很糟糕练习,特别是以后的模拟测试) 此外,我想在除GUI类之外的不同类上使用应用程序的逻辑,我不确定是否将AppGUI作为参数传递给每个方法都有好的做法

总之,如果有人能指出我这种GUI的特定设计模式,那将是非常棒的,感谢提前!

1 个答案:

答案 0 :(得分:2)

我建议使用模型视图控制器(MVC)模式。

MVC的想法是模型(您的应用程序逻辑),视图(UI元素)和控制器都可以一起工作。模型和视图完全相互独立,即您不将模型类对象传递给视图类对象,反之亦然。模型和视图应该与控制器通信,控制器做出所有决定。

控制器

它们包含应用的UI逻辑,就像如何布局视图一样。模型会偶尔通知它们(例如,某些数据已更改!)。它们也被视图通知(例如用户按下按钮!)。控制器需要响应这些通知。例如,当用户按下按钮时,控制器可能会告诉另一个视图显示,或告诉模型进行一些计算或其他一些事情。在您的情况下,您的控制器最有可能拥有UI上按钮和文本框的所有ActionListener

模型

它们包含您应用的逻辑。尝试将模型设计为尽可能独立于UI。如果设计正确,您的模型仍然可以在没有UI的情况下工作,即您应该能够在不更改模型的情况下制作应用程序的命令行版本。例如,如果您正在制作计算器,则模型应该进行实际计算。

视图

大多数情况下,您无需担心此部分,因为swing已经为您提供了许多视图类,例如JButtonJPanelJTextArea等。如果您正在创建自己的视图,请记住它不应包含与模型相关的任何内容,即视图应该可以使用不同的模型正常工作。

您随时可以在网上搜索更多信息。