Страницы

Поиск по вопросам

вторник, 17 декабря 2019 г.

Повторное использование объектов

#android #java #шаблоны_проектирования


Добрый день. В моем проекте есть несколько классов, которые расширяют Fragment -
это экраны. Для подключения экрана используется следующий код:
public void showScreen(Fragment fragment){
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.main_screen_fragment, fragment);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();
}

R.id.main_screen_frament - это контейнер, который используется для отображения экрана.
Для того что бы показать экран я использую следующий код: 
public class ShowMainScreen implements Command {
    @Override
    public void execute() {
        ScreenManager.getScreenManager().showScreen(new MainScreen());
    }
}

Как видно при каждом новом вызове ShowMainScreen, будет создаваться новый экземпляр
класса MainScreen. Это не верно потому что экран созданный один раз, можно без труда
использовать снова.
Как можно хранить уже созданные экраны, для повторного использования?    


Ответы

Ответ 1



Для создания единственного экземпляра класса необходимо использовать шаблон проектирования Singleton. Вот примерная реализация: public class SingletonMainScreen extends MainScreen { static private SingletonMainScreen instance; // закрываем конструктор private SingletonMainScreen () { super(); } public static SingletonMainScreen getInstance() { if (instance == null) instance = new SingletonMainScreen(); return instance; } } Если нет желания городить класс наследник, то можно сделать фабрику или фабричный метод, которые также будут контролировать количество создаваемых экземпляров класса.

Комментариев нет:

Отправить комментарий