В некоторых приложениях использовал подход, в котором фабрика возвращала объекты определенного класса по id. притом возвращала не сам объект а ссылку на него. Сам объект хранится в массиве в фабрике. Притом при всех запросах к фабрике по некоторому id возвращался всегда именно тот единственный экземпляр класса, которых хранил данные для этого id.
Тем самым я достигал того что во всем приложении всегда актуальная информация в этом экземпляре т.к. имеется только один экземпляр и все ссылаются только на него.
Так же в такой класс я добавлял методы для работы и изменения объекта.
Что это за шаблон проектирования? Вроде как синглтон а вроде и нет.
Как по вашему, он удачен? В моем случае он показал себя хорошо, однако я мог просто не попасть на какие-то проблемные места, что думаете?
На JS это выглядит примерно так:
/// некоторый объект, который и будет предоставлять фабрика
class Obj {
constructor(id) {
this.id = id;
this.value = 0;
}
}
/// Фабрика
class Factory {
constructor () {
this.objects = {};
}
getById(id) {
if (id in this.objects)
return this.objects[id];
this.objects[id] = this.load(id);
return this.objects[id];
}
load(id) {
let obj = new Obj(id);
/* получение данных объекта */
return obj;
}
}
let factory = new Factory(); // инициализируем фабрику, она должна быть синглтоном
// использование
let a = factory.getById(123);
console.log(a.value); // 0
let b = factry.getById(123);
console.log(b.value); // 0
b.value = 10;
console.log(a.value); // 10
console.log(b.value); // 10