> Что такое паттерн Singleton (Node.js, JavaScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Mosline
Стек: Node.js, JavaScript
> Пример ответа
Паттерн Singleton (Одиночка) - это порождающий шаблон проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему. В контексте frontend и JavaScript это часто используется для управления состоянием приложения (например, хранилище Redux, логгеры, кэш данных) или для работы с API, где не нужно создавать несколько подключений.
Реализация в JavaScript (ES6+):
JAVASCRIPTclass Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}this.data = [];Singleton.instance = this;}add(item) {this.data.push(item);}getData() {return this.data;}}// Использованиеconst instance1 = new Singleton();const instance2 = new Singleton();console.log(instance1 === instance2); // true
Особенности для Node.js:
В Node.js модули кэшируются после первого импорта, поэтому экспорт объекта-одиночки через module.exports автоматически обеспечивает синглтон-поведение без явного класса:
JAVASCRIPT// logger.jsclass Logger {log(msg) { console.log(msg); }}module.exports = new Logger();// app.jsconst logger = require('./logger');
Недостатки:
-
Усложняет тестирование (создаёт глобальное состояние).
-
Нарушает принцип единственной ответственности (управление экземпляром + бизнес-логика).
-
В frontend может приводить к неявным зависимостям между компонентами.
Альтернативы:
-
Внедрение зависимостей (DI-контейнеры, например, InversifyJS).
-
Модули с локальным состоянием (если не требуется строгий контроль единственности).
> Похожие задачи по frontend
Как реализуется инкапсуляция в JavaScript
Что такое call, apply и bind в JavaScript и в чем их разница
Что такое протокол HTTP и как он работает
В чем заключается принцип работы кластеров Node.js и как они помогают масштабированию приложения
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью