我创建了以下类的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;
}
}
你可以阅读更多有关Singleton设计模式 在这里 。
每一个你需要的,也是唯一一次Application
实例,你这样做:
Application app = Application.getSharedApplication();
你想,如果你需要保证只会有一个应用程序实例使用Singleton设计模式,你需要通过这些类访问。 我不打算发表评论,如果它是构建应用程序的最佳方式,但它会满足你的问题的要求。
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
构造函数中的作为构造ARG Application
到其他类(假设申报的主要类有一个参考)。 这样,你可以明显地使多个实例Application
类。 如果这是你想要的...