如何从Java中的另一个类获取类的特定实例?
我用如何从Java中的另一个类获取类的特定实例?,java,oop,model-view-controller,class,instance,Java,Oop,Model View Controller,Class,Instance,我用main方法创建了以下类,它为这个特定的应用程序创建了Application的新实例和ApplicationModel、ApplicationView和ApplicationController public class Application { // Variables private ApplicationSettings settings; private ApplicationModel model; pri
main
方法创建了以下类,它为这个特定的应用程序创建了Application
的新实例和ApplicationModel
、ApplicationView
和ApplicationController
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
}
我知道,应用程序
总是只有一个唯一的实例
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
}
我想在我的ApplicationModel
、ApplicationView
和ApplicationController
类中获得这个特定实例
private Application()
{
settings = new ApplicationSettings(this);
model = new ApplicationModel(this);
view = new ApplicationView(this, model);
controller = new ApplicationController(this);
}
怎么可能呢?如果您需要保证应用程序只有一个实例,并且需要这些类可以访问它,那么您希望使用单例设计模式。我不打算评论它是否是构建应用程序的最佳方式,但它将满足您问题中的要求
我会在应用程序类上使用单例
放置一个publicstatic
方法来返回您唯一的应用程序实例
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 app = Application.getSharedApplication();
我现在就试过了,您可以将这个
作为应用程序
的构造函数中的构造函数arg传递给其他类(假设为主类声明了引用)。这样,您显然可以创建应用程序
类的多个实例。如果这是您想要的…将应用程序
类的构造函数更改为私有
,并将此
对象发送到应用程序XXX
类
private Application()
{
settings = new ApplicationSettings(this);
model = new ApplicationModel(this);
view = new ApplicationView(this, model);
controller = new ApplicationController(this);
}
您可以在main
方法中调用Application
类上的new
必须更新应用程序设置
、应用程序模型
、应用程序视图
和应用程序控制器
以在其构造函数中获取应用程序
对象。将应用程序
类型的参数添加到组合的构造函数中。创建它们的实例时,只需传递这个。比如说
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
}
这对我来说是一个完美的解决方案。非常感谢你!而且,可能是你打错了<代码>应用程序_app
应该是静态的,如果它是从静态方法引用的。请更正,因为我不确定。:)@爱德华·鲁切维茨:是的!这不是打字错误。我只是忘了把关键词放进去。它一定是静态的。是的,这非常适合我。非常感谢。谢谢你的回答。我一直在使用这种方法,但这不是我想要实现的。现在我宁愿使用Pablo Santa Cruz和smcg提出的单例设计模式。@EdwardRuchevits别忘了这一点。我只想创建一个应用程序的实例。无论如何,谢谢你的回答。我认为,单例模式对我来说会更好,因为我只需要我的应用程序的一个实例。但是谢谢你的回答!