2013-12-05 2 views
1

Давайте предположим, что у нас есть приложение, в этой структуре:Как избежать кругового кэша недействительности бесконечной петли

Client 
--ClientUser 
----Questionnaire 
------Question 

Мы кэшировать каждый из этих пунктов. Если я аннулирую один из этих элементов, его необходимо развернуть вверх и вниз. Потому что после добавления нового вопроса вопрос questionCount вопросника будет устаревшим. Кроме того, после изменения имени клиента клиентский массив в кэшированном объекте ClientUser будет устаревшим.

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

Как я могу избежать этого?

ответ

1

Существует два способа, в зависимости от того, возможны ли петли.

  1. Никогда не распространяйте недействительность обратно на объект, из которого вы его получили.

  2. Удалите объект, связанный с недействительностью, и отслеживайте все объекты, которые уже были признаны недействительными. Недействительные объекты должны попросить этот объект сделать недействительными другие объекты для них, и это не приведет к аннулированию объекта, который уже был признан недействительным как часть этого недействительного.

Смежные вопросы