package ru.geekbrains.lifecycle;

// Это Presenter, делаем его на основе паттерна "одиночка"
// Этот паттерн обладает свойством, хранить один экземпляр объекта на все приложение.
// Для реализации паттерна одиночка, надо добавить статическое приватное поле (instance)
// конструктор сделать приватным
// добавить статический метод, который проверяет, существует ли этот объект в нашем поле, если нет,
// то создает его. И возвращает это поле.
// Таким образом в пролижении всегда существует только один объект.
// Класс, реализующий синглтон нельзя наследовать.
public final class LifeCyclePresenter {

    //Внутреннее поле, будет хранить единственный экземпляр
    private static LifeCyclePresenter instance = null;

    // Это наш счетчик
    private int counter;

    // Конструктор (вызывать извне его нельзя, поэтому он приватный)
    private LifeCyclePresenter(){
        counter = 0;
    }

    // Увеличение счетчика
    public void incrementCounter(){
        counter++;
    }

    public int getCounter(){
        return counter;
    }

    // Метод, который возвращает экземпляр объекта
    // Если объекта нет, то его создаем.
    public static LifeCyclePresenter getInstance(){
        // Здесь реализована "ленивая" инициализация объекта
        // то есть, пока объект не нужен, создавать его не будем.
        if (instance == null){
            instance = new LifeCyclePresenter();
        }
        return instance;
    }
}
