Back to questions
Junior — Middle
90
Можете объяснить, что такое паттерн Singleton и в каких случаях его используют?
Answer from AI
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 полезен, когда нужно контролировать доступ к ресурсам, например, к базе данных, логированию или конфигурации, чтобы избежать создания множества экземпляров и обеспечить согласованность данных.