Java Swing应用程序一致性检查中的会话管理

Java Swing应用程序一致性检查中的会话管理,java,swing,singleton,session-management,Java,Swing,Singleton,Session Management,我使用一个类似于单例的类来操作会话,并使这些类易于引用。我有两个类LockPage和HomePage,它们是延迟初始化的。我的单身类课程在这里: public class Session{ private static LockPage lock; private static HomePage homePage; private Session() { } public static HomePage getHomePage() { if(homePage==null) {

我使用一个类似于单例的类来操作会话,并使这些类易于引用。我有两个类LockPage和HomePage,它们是延迟初始化的。我的单身类课程在这里:

public class Session{
private static LockPage lock;
private static HomePage homePage;

private Session() {

}
public static HomePage getHomePage() {
    if(homePage==null) {
        homePage = new HomePage();
    }
    return homePage;
}

public static LockPage getLockPage() {
    if(lock==null) {
        lock = new LockPage();
    }
    return lock;
}

public static void resetEverything() {
    lock=null;
    homePage = null;
}
}
LockPage首先从main()实例化,成功登录后,主页初始化

主页类中,如果用户单击注销,将调用:

public void logOUt(){
    Session.getHomePage().disposeScreen();
    Session.resetEverything();
    Session.getLockPage();
}
我需要在其他几个类中使用HomePage类,所以我认为这样的引用可能更好。请让我知道这是一种好方法还是有更好的方法

附言:会话类基本上不是一个单独的类

请让我知道这是否是一个好方法


不,我认为不是。您将代码耦合到特定的实现,并公开地将API的其他部分暴露给篡改,这超出了使用它们的类的责任。。。以前是否有人在您的组件上调用过
removeAll
,如果单击了当前屏幕中的按钮,它应该调用另一个屏幕并处理当前屏幕。因此,对于这种情况,我可以从第一个控制器调用第二个控制器,还是有最佳实践@MadProgrammerRouting从一个视图到另一个视图是一种非常常见的场景。我倾向于使用“路线控制器”,它知道根据特定条件在不同视图之间导航的最佳方式,但基本上是相同的想法。像前端控制器@让我们来看看你,路线控制器,导航控制器,它决定了用户如何通过应用程序路线,它还将协调viewsIt之间的信息传递,称为“观察者模式”