如何从Java中另一个类获得类的特定实例?(How to get specific instance

2019-09-21 06:57发布

我创建了以下类的main方法,它创建的新实例Application和实例ApplicationModelApplicationViewApplicationController这个特定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

我想在我得到这个特定实例ApplicationModelApplicationViewApplicationController类。

这怎么可能?

Answer 1:

我会用在应用类单。

把一个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();


Answer 2:

你想,如果你需要保证只会有一个应用程序实例使用Singleton设计模式,你需要通过这些类访问。 我不打算发表评论,如果它是构建应用程序的最佳方式,但它会满足你的问题的要求。

Singleton设计模式教程



Answer 3:

改变你的构造Application类是private和发送this对象到ApplicationXxx类。

private Application()
{
    settings        = new ApplicationSettings(this);
    model           = new ApplicationModel(this);
    view            = new ApplicationView(this, model);
    controller      = new ApplicationController(this);
}

您将能够调用newApplication类从内main方法。

ApplicationSettingsApplicationModelApplicationViewApplicationController必须更新,以一个Application对象在它们的构造。



Answer 4:

添加的参数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

}


Answer 5:

我现在尝试这样做的权利,你可以通过this构造函数中的作为构造ARG Application到其他类(假设申报的主要类有一个参考)。 这样,你可以明显地使多个实例Application类。 如果这是你想要的...



文章来源: How to get specific instance of class from another class in Java?