最近我开始与JAVA一起冒险。我正在寻找有关JAVA项目的设计模式和整体架构的指导。
我正在开展一个小型应用项目作为大学任务。这是一个典型的边做边学的项目。该应用程序的GUI由Swing元素和几个额外的类组成。
我所面临的问题是由于缺乏如何将它们联系在一起的想法而得以实现。具体来说,我面临以下问题:
问题1
登录问题 - 我有自定义用户类。我将current_user保留为主 JFrame 的属性。
在GUI加载期间 - 我想检查用户是否已登录。另外 - 在特定操作上 - 我想退出用户。
目前我通过一直到mainFrame.current_user
属性来解决这两个问题。但我觉得这是不好的方法。由于应用程序中只能有一个用户 - 应该有一种方法可以定义全局可见的方法,如current_user
,user_signed_in()
或sign_out(current_user)
,而无需调用JFrame。我的感觉是否正确?
问题2
在GUI初始化期间,我正在创建一个 JTable ,它显示从Web下载的自定义 WebRequest 类的数据。 JTable 数据保存在Object data[][]
表格模型的属性中,扩展 AbstractTableModel 。现在我在应用程序启动时构建数据模型 - 意味着调用WebRequest,初始化Table及其模型。
现在我想改变这种行为。我想在应用程序启动时显示空的JTable - 并且只通过单击 JMenuItem 刷新按钮来调用WebRequest。
如何接近它?目前我的唯一想法是拥有 JTable 数据模型并调用其中一种方法 - 类似于refresh()
。此方法应调用 WebRequest 并更新 JTable 。但为此,我必须从 JMenuItem 转到完全不同的 JTable 。
这里有什么更好的方法?再次 - 在应用程序中只能调用一个数据模型 - 所以问题1可能是一个similliar问题?
另外,如果你对设计模式有很好的解读,或者对学习有良好的开源回购 - 我会非常感谢你的建议。
答案 0 :(得分:0)
在您寻求指导时,我建议您查看Oracle tutorial on Swing并特别注意Table和Model use部分,因为它会回答您的问题第二个问题。
至于第一个,我建议你不要将current_user
元素放在 JFrame中。
Model-View-Controler或Model-View-Presenter是设计模式的良好起点。
答案 1 :(得分:0)
对于你的第一个问题,我会建议一个名为“Authentication”的extre类。这个类应该有一个用户。该类还可以具有以下方法:signOut(),signIn(String username,String password),...
对于检查,我应该执行以下操作:
public boolean isLoggedIn(){
if(currentUser != null){
return true;
}else{
return false;
}
}
重要 Java使用命名约定:使用mixedCase,不使用下划线。
对于第二个问题:
我建议为您的刷新想法搜索观察者模式。