Ответ
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
Используется для:
- Логирования
- Конфигурации приложения
- Доступа к БД
- Кеширования
Плюсы:
- Контроль доступа к ресурсу
- Глобальный доступ
- Ленивая инициализация
Минусы:
- Нарушает принцип единой ответственности
- Усложняет тестирование
- Может стать антипаттерном при злоупотреблении