Sobes.tech
Назад к вопросам
Junior — Middle
91

Можете объяснить, что такое паттерн Singleton и в каких случаях его используют?

Ответ от нейросети

sobes.tech AI

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

В Node.js Singleton часто реализуется через модульную систему: при первом импорте модуля создаётся объект, который затем кешируется и повторно используется при последующих импортах.

Пример простого Singleton в Node.js:

// logger.js
class Logger {
  constructor() {
    if (Logger.instance) {
      return Logger.instance;
    }
    this.logs = [];
    Logger.instance = this;
  }

  log(message) {
    this.logs.push(message);
    console.log(message);
  }
}

module.exports = new Logger();

Использование:

const logger1 = require('./logger');
const logger2 = require('./logger');

logger1.log('Первое сообщение');
console.log(logger1 === logger2); // true

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