当解决依赖当我通过对象本身恢复所有的每个节点和边缘反序列化对象图(面向对象的方式),我发现有严重的依赖性问题。如何反序列化对象图
例如,如果一个对象引用A
本身A
,(自我循环引用)这意味着,它希望本身A
在完整原始状态同时它恢复。因为它在序列化时处于该状态。
对于自引用的情况下,可以,因为它知道正在恢复本身检测。但是,如果A
需要另一个对象B
,则应该期望其他对象B
也处于完全原始状态。如果对象B
也引用A
,那么现在再次循环引用A
,并且在不知道A
正在恢复的情况下,它将成为相同的问题。 如果B
想在反序列化时使用A
的某些属性,则不能保证存在。
从根本上说,这个问题是因为一个对象需要其他对象的完整状态,尽管它本身是不完整的状态。这没有意义。我曾考虑过将恢复过程分为多个阶段,但它并没有产生真正的区别,因为实际上,在所有阶段完成之前,对象将保持不完整状态。
能给我一些建议或很好地解决这个问题?
PS。 我开始编码这个做一些替代Cocoa的NSKeyedArchiver
。所以我认为对象的编码是由对象本身完成的。 (对于它的内部状态)所以它可能会与一般的图形问题不同。但我不能排除隐藏状态,可以是由对象本身得到...