Что это за шаблон проектирования и насколько он удачен? В некоторых приложениях использовал подход, в котором фабрика возвращала объекты определенного класса по 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

21 Авг 2019 в 06:24
251 +1
0
Ответы
1

Этот подход к проектированию можно назвать паттерном Фабрика (Factory) с использованием кэширования объектов. Он позволяет создавать объекты определенного класса по запросу и использовать кэш для повторного использования уже созданных объектов.

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

Однако, необходимо быть осторожным с использованием кэширования объектов, чтобы избежать утечек памяти или неожиданного поведения из-за изменения состояния кэшированных объектов. Также, необходимо учитывать, что этот подход может привести к проблемам при многопоточном доступе к объектам.

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

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир