@MishaXXL

По какой логике работает метод getInstance?

При попытке найти информацию про метод getInstance, нет ссылок на документацию
Но и текущая реализация здесь не совсем понятна
По какой логике тут работает метод getInstance?
И почему конструктор помещен в private?

Единственный вариант, который приходит в голову это использование класс Singleton, как
Singleton single = Singleton.getInstance();

Но подразумевается, что всё-таки правильная конструкция должна быть
Singleton single = new Singleton();

public class Singleton {
  private static Singleton INSTANCE;

  private Singleton() {}

  public static Singleton getInstance() {
    if (INSTANCE == null) {
      INSTANCE = new Singleton();
    }
    return INSTANCE;
  }
}
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Тут логика такая: при первой попытке получить синглтон он будет инстанцирован.
Конструктор приватный для того, что бы не было возможности инстанцировать синглтон никак иначе, как через метод getInstance.

Но подразумевается, что всё-таки правильная конструкция должна быть
Singleton single = new Singleton();

Таким образом появится возможность получить неограниченное количество экземпляров класса, что противоречит идее синглтона.

Вот неплохая статья по этому поводу: https://habr.com/ru/articles/129494/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы