[ d ] [ b / cu / dev ] [ r ] [ a / ts ] [ ci ] [ gnx / int ] [ misc ] [ dev / stat ]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог] [Главная]

Файл: pg063.gif -(25 KB, 482x333, pg063.gif)
25 No.10817  
Есть два запроса к объекту, условно A и B.
Внутреннее состояние объекта не изменяется при запросах.
Запрос A не использует какие-либо данные из результата запроса B.
Запрос B использует данные полученные по запросу A.
Клиенту необходимо предоставить возможность получать результат запросов отдельно.
Для этого результат запроса B не должен быть зависим от того, вызывался ли на кануне запрос A.
Но если клиент делает последовательно запросы A и B, получается лишний вызов A при запросе B.
Вопрос в том, как сделать атомарные вызовы A и B при этом лишний раз не обрабатывая запрос A.
>> No.10818  
>Запрос B использует данные полученные по запросу A.
>Внутреннее состояние объекта не изменяется при запросах.
Где хранятся данные запроса А?
>> No.10819  
>>10818
>Где хранятся данные запроса А?
Пока нигде.
Можно их поместить в поле объекта к которому производится запрос, но нужно будет поддерживать это поле всегда в актуальным состоянии.
Приходит мысль о том, что запросы A и B сильно связанны и следует их результат объединить в один запрос, результатом которых будет объект-значение из которого уже клиент будет извлекать нужные ему части. Тут тоже может возникнуть проблема лишних операций: когда нужен будет только результат A, неявно будет получен и результат запроса B.
>> No.10820  
Пришла такая мысль.

Можно использовать декоратор с инкапсулированной коллекцией.
В результате запроса будет возвращаться коллекция с одним элементом(результат запроса A) или с двумя элементами(результат запроса A и B).
Хранение результата зпроса А в поле объекта нежелательно, так как вносит лишнее состояние.
>> No.10822  
О какой вообще среде идет речь не понятно.
Объяви необходимой уровня глобальности переменную, в которой будешь хранить результат А. Если при вызове Б этот результат не будет инициализирован/определен, то вызываешь предворительно А, иначе сразу выполняешь Б.
Не хочешь хранить переменную в объекте - объяви внешнюю.
>> No.10823  
В БД есть вьюшки, если чо, няш :3
>> No.10825  
>Вопрос в том, как сделать атомарные вызовы A и B при этом лишний раз не обрабатывая запрос A.
А с чего это он лишний? Не говоря уже о том, что между А и В могут быть случиться реквесты, изменяющие стейт.

Алсо слушай вот эту >>10823 няшу и скрой
этого >>10820 паттернодебила и эту >>10822 кресто/пхп макаку.
>> No.10826  
>>10817
Нормальные бд умеют кешировать запросы.
>> No.10827  
Потому, что гладиолус.
ОП, с твоими вводными задача смотрится как "летели два утюга, фиолетовый перец, какой сегодня день по фаренгейту?".

Ты бот который сюда рандомные слова постит?



[ d ] [ b / cu / dev ] [ r ] [ a / ts ] [ ci ] [ gnx / int ] [ misc ] [ dev / stat ]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог] [Главная]