Есть два запроса к объекту, условно A и B. Внутреннее состояние объекта не изменяется при запросах. Запрос A не использует какие-либо данные из результата запроса B. Запрос B использует данные полученные по запросу A. Клиенту необходимо предоставить возможность получать результат запросов отдельно. Для этого результат запроса B не должен быть зависим от того, вызывался ли на кануне запрос A. Но если клиент делает последовательно запросы A и B, получается лишний вызов A при запросе B. Вопрос в том, как сделать атомарные вызовы A и B при этом лишний раз не обрабатывая запрос A.
>Запрос B использует данные полученные по запросу A. >Внутреннее состояние объекта не изменяется при запросах. Где хранятся данные запроса А?
>>10818 >Где хранятся данные запроса А? Пока нигде. Можно их поместить в поле объекта к которому производится запрос, но нужно будет поддерживать это поле всегда в актуальным состоянии. Приходит мысль о том, что запросы A и B сильно связанны и следует их результат объединить в один запрос, результатом которых будет объект-значение из которого уже клиент будет извлекать нужные ему части. Тут тоже может возникнуть проблема лишних операций: когда нужен будет только результат A, неявно будет получен и результат запроса B.
Пришла такая мысль. Можно использовать декоратор с инкапсулированной коллекцией. В результате запроса будет возвращаться коллекция с одним элементом(результат запроса A) или с двумя элементами(результат запроса A и B). Хранение результата зпроса А в поле объекта нежелательно, так как вносит лишнее состояние.
О какой вообще среде идет речь не понятно. Объяви необходимой уровня глобальности переменную, в которой будешь хранить результат А. Если при вызове Б этот результат не будет инициализирован/определен, то вызываешь предворительно А, иначе сразу выполняешь Б. Не хочешь хранить переменную в объекте - объяви внешнюю.
В БД есть вьюшки, если чо, няш :3
>Вопрос в том, как сделать атомарные вызовы A и B при этом лишний раз не обрабатывая запрос A. А с чего это он лишний? Не говоря уже о том, что между А и В могут быть случиться реквесты, изменяющие стейт. Алсо слушай вот эту >>10823 няшу и скрой этого >>10820 паттернодебила и эту >>10822 кресто/пхп макаку.
>>10817 Нормальные бд умеют кешировать запросы.
Потому, что гладиолус. ОП, с твоими вводными задача смотрится как "летели два утюга, фиолетовый перец, какой сегодня день по фаренгейту?". Ты бот который сюда рандомные слова постит?
- wahaba + wakaba 3.0.9 + futaba + futallaby -