Junior
130
questionbank

Что такое паттерн Singleton?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

Используется, когда требуется ровно один экземпляр класса, например, для мене­джера конфи­гура­ции, пула подклю­чений к базе данных или логгера.

Реализация:

  • Приватный статический член класса для хранения единственного экземпляра.
  • Приватный конструктор, запрещающий создание экземпляров извне.
  • Статический публичный метод для получения экземпляра, который создает его при первом вызове (ленивая инициализация) или возвращает уже созданный.

Пример:

csharp

Преимущества:

  • Гарантия единственности экземпляра.
  • Контролируемый доступ к экземпляру.
  • Ленивая инициализация (если реализована).

Недостатки:

  • Может быть антипаттерном, если используется без веской причины.
  • Усложняет модульное тестирование из-за глобального состояния.
  • Нарушает принцип единой ответственности (управляет своим жизненным циклом).
  • Проблемы с многопоточностью, если не реализована потокобезопасность.