我需要序列化/反序列化一个多态继承体系,但是对于格式我有些不清楚。
我想,每个独特的对象类型应该自己进行序列化,从一个“魔数”开始,表示工厂后来需要反序列化的类型。然而,反序列化应该由各个类处理还是由工厂显式地完全处理呢?
我想,如果反序列化由各个类处理,那么它将更加“优雅”和结构化,但是考虑到大多数(如果不是全部)对象都继承自其他对象,并且必须使用数据来初始化基类构造函数,我有点不清楚继承类的成员方法如何能够实现这一点,因为基类的初始化必须在其之前进行。
另一种方式是将反序列化方法与各个类分离,并将所有代码移动到工厂中,但这将使实现反序列化以完全相反的方式变得更加困难。这意味着我必须提取每个类完整继承链所需的所有数据,将其放入堆栈中,并使用它来调用适当的构造函数。
对此有什么想法吗?