有关序列化,反序列化的设计问题

时间:2016-11-03 09:37:46

标签: c++ design-patterns polymorphism

我有很多课程,比如说,

class A
{
/*member variables*/
};

class B .. Class Z

我正在将这些类的对象复制到缓冲区(char *)中。现在我有一个读者对象,它不断轮询这个缓冲区并将字节反序列化为对象并打印它们。我的问题是如何设计deserialzer类。

我的方法是将对象的类型作为标头嵌入,然后通过缓冲区发送。在读取缓冲区后,我知道了类型,然后我可以反序列化相应的对象。反序列化部分的问题是现在应该知道所有消息类型并根据类型调用适当的函数。我打算将这个反序列化作为一个单独的实体,不知道消息类型或反序列化的代码不应该是它的一部分。

我正在寻找接口,多态等解决方案来解决这个问题。这种问题有设计模式吗?

1 个答案:

答案 0 :(得分:0)

第一个问题,是同一翻译单位的读者和作者吗?

如果是,那么你可以拥有多态类。基类Message及其派生类。读者将缓冲区读取为Message*,然后调用重写的虚函数以获取有关派生类的必需信息。

如果不是,则可以在消息中插入type-to-int代码。