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

«Что такое паттерн Singleton» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример реализации на JavaScript:

class Singleton {
  constructor() {
    if (!Singleton.instance) {
      Singleton.instance = this;
    }
    return Singleton.instance;
  }
}

const instance1 = new Singleton();
const instance2 = new Singleton();
console.log(instance1 === instance2); // true

Используется для:

  • Логирования
  • Конфигурации приложения
  • Доступа к БД
  • Кеширования

Плюсы:

  • Контроль доступа к ресурсу
  • Глобальный доступ
  • Ленивая инициализация

Минусы:

  • Нарушает принцип единой ответственности
  • Усложняет тестирование
  • Может стать антипаттерном при злоупотреблении