> Что такое паттерн Singleton (Node.js, JavaScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: Mosline

Стек: Node.js, JavaScript

> Пример ответа

Паттерн Singleton (Одиночка) - это порождающий шаблон проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему. В контексте frontend и JavaScript это часто используется для управления состоянием приложения (например, хранилище Redux, логгеры, кэш данных) или для работы с API, где не нужно создавать несколько подключений.

Реализация в JavaScript (ES6+):

JAVASCRIPT
class 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.js
class Logger {
log(msg) { console.log(msg); }
}
module.exports = new Logger();
// app.js
const logger = require('./logger');

Недостатки:

  • Усложняет тестирование (создаёт глобальное состояние).

  • Нарушает принцип единственной ответственности (управление экземпляром + бизнес-логика).

  • В frontend может приводить к неявным зависимостям между компонентами.

Альтернативы:

  • Внедрение зависимостей (DI-контейнеры, например, InversifyJS).

  • Модули с локальным состоянием (если не требуется строгий контроль единственности).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью