设计模式如何在Java项目中构造我的类
最近我开始了一次JAVA冒险。我正在寻找关于JAVA项目的设计模式和总体架构的指导
我正在做一个小的申请项目作为大学作业。这是一个典型的边做边学项目。该应用程序的GUI由Swing元素和几个附加类组成
我所面临的问题与我不知道如何把它们联系在一起有关。具体而言,我面临以下问题:
问题1
登录问题-我有自定义用户类。我将当前用户保留为mainJFrame的属性
在GUI加载期间-我想检查用户是否已登录。另外,关于具体操作,我想注销用户
目前,我通过一直使用mainFrame.current_user
属性来解决这两个问题。但我觉得这是个糟糕的方法。由于应用程序中只能有一个用户,因此应该有一种方法可以定义全局可见的方法,如current_user
、user_signed_in()
或sign_out(current_user)
,而无需调用JFrame。我的感觉对吗
问题2
在GUI初始化过程中,我创建了一个JTable,它使用自定义WebRequest类显示从web下载的数据JTable数据保存在Object data[][]
表模型扩展的属性AbstractTableModel。现在,我正在应用程序启动时构建数据模型——这意味着调用WebRequest、初始化表及其模型
现在我想改变这种行为。我希望在应用程序启动时显示空JTable,并仅通过单击JMenuItem刷新按钮调用WebRequest
如何处理?目前,我唯一的想法是使用JTable数据模型并调用它的一个方法,比如refresh()
。此方法应调用WebRequest并更新JTable。但对于这一点,我必须从JMenuItem到JTable这是完全不同的位置
这里有什么更好的方法?再一次-在应用程序中只能调用一个数据模型-所以可能是问题1的类似问题
另外,如果你知道一本关于设计模式的好读物,或者一本好的开源回购书,我会非常感谢你的建议
# 1 楼答案
由于您正在寻找一些指导,我建议您看看Oracle tutorial on Swing,并特别注意其中的Table和Model use部分,因为它将回答您的第二个问题
至于第一个,我建议你不要把
current_user
元素放在JFrame中模型视图控制器或模型视图演示器是设计模式的良好起点
# 2 楼答案
对于第一个问题,我建议使用名为“Authentication”的extre类。这个类应该有一个用户。该类还可以有以下方法:signOut()、signIn(字符串用户名、字符串密码)
对于检查,我应该执行以下操作:
重要Java使用一种命名约定:使用mixedCase,不使用下划线
关于第二个问题:
我建议为你的更新想法搜索观察者模式