[英]Singleton Class in MVC Swing recursively calling itself
我有一个经理 class 被所有控制器(通过抽象)引用,这样我就可以根据用户输入在视图之间切换。 The ApplicationManager
is a Singleton Class in which the MainFrame
of my application (a JFrame
) is instantiated as well as two variables a JPanel
and a Controller
: currentView
and currentController
respectively.
问题:我在main(String args[])
方法中遇到了一个问题,我正在调用ApplicationManager
的getInstance()
方法,该方法的构造函数实例化了登录页面视图和 controller。 但是我的 controller 也调用getInstance()
方法。 因此,我的应用程序循环通过ApplicationManager()
的构造函数,因为对象从未完全实例化。
在我的ApplicationManager
的构造函数中,我有以下代码:
private ApplicationManager() {
try {
changePage("LoginPage");
mainFrame = new MainFrame(currentView);
} catch (ClassNotFoundException e) {
e.getMessage();
}
}
changePage()
如下所示:
public void changePage(String pageName) throws ClassNotFoundException {
try {
Class<?> view = Class.forName("userinterface.frames." + pageName + "View");
Class<?> controller = Class.forName("controller." + pageName + "Controller");
Constructor<?> viewConstructor = view.getConstructor();
Constructor<?> controllerConstructor = controller.getConstructor(view);
currentView = (JPanel) viewConstructor.newInstance();
currentController = (Controller) controllerConstructor.newInstance(currentView);
} catch (NoSuchMethodException | IllegalAccessException | InstantiationException
| InvocationTargetException e) {
e.getMessage();
}
}
Controller
如下所示:
private ApplicationManager applicationManager;
public Controller() {
applicationManager = ApplicationManager.getInstance();
}
public void goTo(String pageName) {
try {
applicationManager.changePage(pageName);
} catch (ClassNotFoundException e) {
e.getMessage();
}
}
我不知道该怎么办。 我宁愿按照我的设想继续。 其中ApplicationManager
与其同名。 但是这样做我需要 controller 和要实例化的视图。 对于初始屏幕,我需要 LoginPage。 我对任何和所有解决方案持开放态度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.