【问题标题】:Looking for a GUI design-pattern that fits this application寻找适合此应用程序的 GUI 设计模式
【发布时间】: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


【解决方案1】:

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

MVC 的理念是模型(您的应用程序逻辑)、视图(UI 元素)和控制器一起工作。模型和视图彼此完全独立,即您不将模型类对象传递给视图类对象,反之亦然。模型和视图应该与控制器对话,控制器做出所有决定。

控制器

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

型号

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

观看次数

大多数时候,你不必担心这部分,因为 Swing 已经为你提供了很多视图类,例如JButtonJPanelJTextArea 等。如果你碰巧正在创建您自己的视图,请记住它不应包含与模型相关的任何内容,即视图应与不同的模型一起正常工作。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多