假设我们在这个结构中有一个应用程序:
Client
--ClientUser
----Questionnaire
------Question
我们正在缓存这些项目中的每一项。如果我使其中一个项无效,则需要向上和向下传播。因为在添加新问题后,问卷的questionCount将会过时。此外,在查找客户端名称后,缓存的ClientUser对象中的客户端数组将过时。
所以每个失效代码也必须调用它的父代和子代的无效代码。但是,在使问题无效之后,它会向上传播并使客户端无效。但是客户端失效代码也会向下传播,这种情况一直在继续......
我该如何避免这种情况?
答案 0 :(得分:1)
有两种方法,取决于循环是否可行。
永远不要将失效传播回您所获得的对象。
让一个对象与正在进行的失效相关联,并让它跟踪已经失效的每个对象。被无效的对象必须要求此对象使其他对象无效,并且不会使作为此无效的一部分已经失效的对象无效。