Паттерн Singleton гарантирует, что у класса есть только один экземпляр на протяжении всего жизненного цикла приложения. Каждый запрос этого экземпляра возвращает один и тот же объект.
1. ES Modules (Рекомендуется)
ES-модули кэшируются после первого импорта, что естественным образом делает их синглтонами:
// config.js
export const config = { apiUrl: "https://example.com" };
// Где бы ты ни импортировал config, ты получишь один и тот же объект
import { config } from "./config.js";
2. Синглтон на основе замыкания
const Singleton = (() => {
let instance;
return {
getInstance: () => instance ?? (instance = { value: 42 }),
};
})();
3. Статическое свойство класса
class Singleton {
static instance;
constructor() {
if (Singleton.instance) return Singleton.instance;
Singleton.instance = this;
}
}
Синглтоны могут создавать проблемы при чрезмерном использовании:
Используй Singleton только когда требуется действительно общий, единый источник истины — например, менеджер конфигурации, логгер или пул соединений.
ES модули автоматически реализуют паттерн Singleton, потому что модуль кешируется после первого импорта, гарантируя, что все последующие импорты ссылаются на один и тот же экземпляр объекта.
Новый — ещё не проверен сообществом
Вы