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

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

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

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

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

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 989 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир