How to get a specific instance of a class from another class in Java?

I created the following class using a method mainthat creates a new instance Applicationand instances ApplicationModel, ApplicationViewand ApplicationControllerfor that specific one 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

}

I know that there will always be only one unique instance Application.

And I want to get this particular instance in classes ApplicationModel, ApplicationViewand ApplicationController.

How is this possible?

+5
source share
5 answers

I would use singleton in the Application class.

Place the method public staticto return the same application instance.

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();
+6

Singleton, , , , . , , .

Singleton

+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 .

+2

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

}
+1

, this arg Application ( , ​​ ). , , , Application. , ...

0

All Articles