【发布时间】:2013-12-04 06:35:07
【问题描述】:
我需要序列化/反序列化多态层次结构,但我对格式有些不清楚。
按照我的理解,每个唯一的对象类型都应该自行序列化,以“幻数”开头,表示工厂稍后需要反序列化的类型。但是,反序列化应该由单个类处理还是显式地完全由工厂处理?
我猜如果反序列化由单个类处理,它会更加“优雅”和结构化,但考虑到大多数(如果不是所有)对象都继承自其他对象并且必须使用数据来初始化基类构造函数,我我有点不清楚继承类的成员方法如何能够实现这一点,因为基类初始化必须在它之前。
另一种方法是将反序列化方法从各个类中分离出来,并将所有代码移至工厂,但这会使以完全与序列化相反的方式实现反序列化变得更加困难。这意味着我必须提取每个类的完整继承链所需的所有数据,将其放入堆栈并使用它来调用适当的构造函数。
对这个主题有什么想法吗?
【问题讨论】:
标签: c++ design-patterns serialization base-class polymorphism