Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java项目中构造类_Java_Design Patterns_Model - Fatal编程技术网

如何在Java项目中构造类

如何在Java项目中构造类,java,design-patterns,model,Java,Design Patterns,Model,最近我开始了一次JAVA冒险。我正在寻找关于JAVA项目的设计模式和总体架构的指导 我正在做一个小的申请项目作为大学作业。这是一个典型的边做边学项目。该应用程序的GUI由Swing元素和几个附加类组成 我所面临的问题与我不知道如何把它们联系在一起有关。具体而言,我面临以下问题: 问题1 登录问题-我有自定义用户类。我将当前_用户保留为main JFrame的属性 在GUI加载期间-我想检查用户是否已登录。另外,关于具体操作,我想注销用户 目前,我通过一直访问mainFrame.current_用

最近我开始了一次JAVA冒险。我正在寻找关于JAVA项目的设计模式和总体架构的指导

我正在做一个小的申请项目作为大学作业。这是一个典型的边做边学项目。该应用程序的GUI由Swing元素和几个附加类组成

我所面临的问题与我不知道如何把它们联系在一起有关。具体而言,我面临以下问题:

问题1

登录问题-我有自定义用户类。我将当前_用户保留为main JFrame的属性

在GUI加载期间-我想检查用户是否已登录。另外,关于具体操作,我想注销用户

目前,我通过一直访问mainFrame.current_用户属性来解决这两个问题。但我觉得这是个糟糕的方法。由于应用程序中只能有一个用户,因此应该有一种方法可以定义全局可见的方法,如current_user、user_signed_in或sign_outcurrent_user,而无需调用JFrame。我的感觉对吗

问题2

在GUI初始化期间,我正在创建一个JTable,该JTable使用自定义WebRequest类显示从web下载的数据。JTable数据保存在对象数据[]中,对象数据[]是表模型扩展AbstractTableModel的一个属性。现在,我正在应用程序启动时构建数据模型——这意味着调用WebRequest、初始化表及其模型

现在我想改变这种行为。我希望在应用程序启动时显示空JTable,并仅通过单击JMenuItem刷新按钮调用WebRequest

如何处理?目前,我唯一的想法是使用JTable数据模型并调用它的一个方法,比如刷新。此方法应调用WebRequest并更新JTable。但对于这一点,我必须从JMenuItem到位于完全不同位置的JTable

这里有什么更好的方法?再一次-在应用程序中只能调用一个数据模型-所以可能是问题1的类似问题


另外,如果您对设计模式有很好的了解,或者需要研究好的开源回购协议,我将非常感谢您的任何建议。

当您正在寻找一些指导时,我建议您查看一下,并特别注意其中的和部分,因为它将回答您的第二个问题

至于第一个,我建议您不要将当前的用户元素放在JFrame中


模型视图控制器或模型视图演示器是这里作为设计模式的良好起点。

对于第一个问题,我建议使用名为Authentication的extre类。这个类应该有一个用户。该类还可以有以下方法:注销、登录用户名、字符串密码等

对于检查,我应执行以下操作:

public boolean isLoggedIn(){
    if(currentUser != null){
        return true;
    }else{
        return false;
    }
}
重要提示:Java使用命名约定:使用mixedCase,不使用下划线

关于第二个问题:

我建议为您的更新想法搜索观察者模式