Как применить паттерн singleton в node.js в разных файлах не используя глобальный объект global ?
Структура приложения
app/app.js
app/files/Shop.js
app/files/Fruits.js
app.js
let Shop = require("./files/Shop");
let shop = new Shop();
Fruits.js
let Shop = require("./Shop");
let shop = Shop.getInstance(); // цель - получение ссылки на созданный экземпляр в app.js
Так как файл подключается заново соответственно все те переменные или статические свойства(Shop.instance), которые в нем создаются чтобы хранить ссылку на экземпляр - пересоздаются.
Решение:
Shop.js
class Shop {
constructor() {
this._store = null;
}
setStore(value) {
this._store = value;
}
getStore(value) {
return this._store;
}
}
module.exports = new Shop();
app.js
let shop = require("./files/Shop");
shop.setStore("apple");
Fruits.js
let shop = require("./Shop");
shop.getStore(); // "apple"