мета-данные страницы
Это старая версия документа!
Singleton
Также известен как: Одиночка
(https://refactoring.guru/ru/design-patterns/singleton)
Одиночка — это порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
Проблема
Решает две проблемы:
- Гарантирует наличие единственного экземпляра класса. Чаще всего это полезно для доступа к какому-то общему ресурсу, например, базе данных. Представьте, что вы создали объект, а через некоторое время пробуете создать ещё один. В этом случае хотелось бы получить старый объект, вместо создания нового.
- Предоставляет глобальную точку доступа. Это не просто глобальная переменная, а защищенная от записи глобальная переменная.
Применим:
- Когда в программе должен быть единственный экземпляр какого-то класса: Одиночка скрывает от клиентов все способы создания нового объекта, кроме специального метода. Этот метод либо создаёт объект, либо отдаёт существующий объект, если он уже был создан.
- Когда вам хочется иметь больше контроля над глобальными переменными: В отличие от глобальных переменных, Одиночка гарантирует, что никакой другой код не заменит созданный экземпляр класса, поэтому вы всегда уверены в наличии лишь одного объекта-одиночки.
Структура
Одиночка определяет статический метод `getInstance`, который возвращает единственный экземпляр своего класса.
Все реализации одиночки сводятся к тому, чтобы скрыть конструктор по умолчанию и создать публичный статический метод, который и будет контролировать жизненный цикл объекта-одиночки.



