我使用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
课程中获得此特定实例。
怎么可能?
答案 0 :(得分:7)
我会在Application类上使用单例。
使用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;
}
}
您可以阅读有关单身设计模式 here的更多信息。
每当您需要唯一的Application
实例时,您可以执行以下操作:
Application app = Application.getSharedApplication();
答案 1 :(得分:2)
如果您需要保证只有一个Application实例,并且您需要这些类可以访问它,那么您希望使用Singleton设计模式。我不打算评论它是否是构建应用程序的最佳方式,但它将满足您的问题中的要求。
答案 2 :(得分:2)
将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
个对象。
答案 3 :(得分:1)
将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
}
答案 4 :(得分:0)
我现在尝试了这个,你可以将this
作为构造函数arg在Application
的构造函数中传递给其他类(假设有一个为主类声明的引用)。这样,您显然可以创建Application
类的多个实例。如果这就是你想要的......