Содержание

Singleton

Также известен как: Одиночка

(https://refactoring.guru/ru/design-patterns/singleton)

Одиночка — это порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

Проблема

Решает две проблемы:

  1. Гарантирует наличие единственного экземпляра класса. Чаще всего это полезно для доступа к какому-то общему ресурсу, например, базе данных. Представьте, что вы создали объект, а через некоторое время пробуете создать ещё один. В этом случае хотелось бы получить старый объект, вместо создания нового.
  2. Предоставляет глобальную точку доступа. Это не просто глобальная переменная, а защищенная от записи глобальная переменная.

Применим:

Преимущества и недостатки

Структура

Одиночка определяет статический метод `getInstance`, который возвращает единственный экземпляр своего класса.

Все реализации одиночки сводятся к тому, чтобы скрыть конструктор по умолчанию и создать публичный статический метод, который и будет контролировать жизненный цикл объекта-одиночки.

Примеры

Наивный Одиночка

Многопоточный Одиночка