Ычан: [d | b / bro / hr / l / m / mu / o / s / tran / tu / tv / vg / x | a / aa / c / fi / jp / rm / tan / to / vn]
[Назад]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 10817)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, WEBP, XCF, ZIP размером до 5120 кБ.
  • Ныне 3654 unique user posts. Посмотреть каталог
  • Предельное количество бампов нити: 500
pg063.gif - (25.96KB, 482×333)
10817
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  
Потому, что гладиолус.
ОП, с твоими вводными задача смотрится как "летели два утюга, фиолетовый перец, какой сегодня день по фаренгейту?".

Ты бот который сюда рандомные слова постит?
Удалить сообщение []
Пароль  
[Mod]