【发布时间】:2016-11-06 16:57:55
【问题描述】:
我正在为一个学校项目开发一个 Java 桌面应用程序,我想知道我应该如何设计 GUI 的代码,特别是因为我以后必须在应用程序上运行 JUnit 和功能测试。我知道这听起来有点像一个基于意见的问题,但我并不是在要求“最佳”方法,我只是想指出一种可以满足我的应用需求的特定设计模式。
要详细说明应用程序的类型,它是“基于阶段的”,一个按钮可通向应用程序的不同部分。一个主窗口,只有错误或警告弹出窗口(只有一帧)。
我目前的做法:
到目前为止,我已经使用 Eclipse 的 WindowBuilder(主菜单、管理菜单和用户菜单)和一个 AppGUI 类设计了 3 个不同的 JPanel 类,该类使用 CardLayout 布局创建和清空框架,并用 3 个面板之一填充它(从主菜单开始)。然后这些面板上的按钮指向下一个面板。 (例如,主菜单 -> 用户菜单 -> 创建配置文件)
面板需要与 AppGUI 实例进行通信才能执行面板更改以及稍后执行其他选项将具有的功能。为此,我一直在初始化时将 AppGUI 实例作为参数传递给面板并将其存储在每个面板中(我首先想到有一个单例 AppGUI 并对其进行静态引用,但后来我读到它很糟糕练习,专门用于以后的模拟测试)。
此外,我想在除 GUI 类之外的不同类上拥有应用程序的逻辑,我不确定是否将 AppGUI 作为参数传递给每个方法是否是好的做法
总之,如果有人能指出这种 GUI 的特定设计模式,那就太好了,在此先感谢!
【问题讨论】:
-
@RenéLink 我对你链接到我的博客文章有点困惑,一篇文章将 MVC 作为三角形连接进行讨论,其中视图与模型和控制器对话,而模型仅与视图对话.然后在 Sweeper 的回答中,它是不同的“模型和视图应该与控制器对话,控制器做出所有决定。”。所以我猜想有不同的方式来实现这个设计,但我应该用哪种方式来做我的应用程序?正如 Sweeper 所描述的那样,或者作为你链接我的帖子?
标签: java swing user-interface design-patterns