我使用
main
方法创建了以下类,该方法为这个特定的 Application
创建了 ApplicationModel
的新实例以及 ApplicationView
、ApplicationController
和 Application
的实例。
public class Application
{
// Variables
private ApplicationSettings settings;
private ApplicationModel model;
private ApplicationView view;
private ApplicationController controller;
// Constructor
public Application()
{
settings = new ApplicationSettings();
model = new ApplicationModel();
view = new ApplicationView(model);
controller = new ApplicationController();
}
// Main method
public static void main(String[] args)
{
Application application = new Application();
}
// Getters for settings, model, view, controller for instance of Application
}
我知道,永远只有一个唯一的
Application
实例。
我想在我的
ApplicationModel
、ApplicationView
和 ApplicationController
类中获取这个特定实例。
怎么可能?
我会在应用程序类上使用单例。
放置一个
public static
方法来返回您唯一的应用程序实例。
public class Application
{
private Application() { } // make your constructor private, so the only war
// to access "application" is through singleton pattern
private static Application _app;
public static Application getSharedApplication()
{
if (_app == null)
_app = new Application();
return _app;
}
}
您可以阅读有关单例设计模式这里的更多信息。
每次您需要唯一的
Application
实例时,您都会:
Application app = Application.getSharedApplication();
如果您需要保证只有一个 Application 实例并且需要它可以被这些类访问,那么您需要使用 Singleton 设计模式。我不会评论这是否是构建应用程序的最佳方式,但它将满足您问题中的要求。
将
Application
类的构造函数更改为 private
并将 this
对象发送到 ApplicationXxx
类。
private Application()
{
settings = new ApplicationSettings(this);
model = new ApplicationModel(this);
view = new ApplicationView(this, model);
controller = new ApplicationController(this);
}
您将能够从
new
方法中调用 Application
类上的 main
。
您的
ApplicationSettings
、ApplicationModel
、ApplicationView
和 ApplicationController
必须更新以在其构造函数中获取 Application
对象。
将
Application
类型的参数添加到复合材料的构造函数中。当您创建它们的实例时,只需传递 this
。例如
public class Application {
String s = "Setting";
class ApplicationSettings {
Application sc;
ApplicationSettings(Application sc){
this.sc = sc;
System.out.println(sc.s);
}
}
// Variables
private ApplicationSettings settings;
// Constructor
public Application()
{
settings = new ApplicationSettings(this);
}
// Main method
public static void main(String[] args)
{
Application application = new Application();
}
// Getters for settings, model, view, controller for instance of Application
}
我现在尝试了这个,您可以将
this
作为 Application
的构造函数中的构造函数参数传递给其他类(假设有为主类声明的引用)。这样你显然可以创建 Application
类的多个实例。如果这就是你想要的...