关于序列化、反序列化的设计问题

Design issue regarding serializing , deserializing

本文关键字:问题 反序列化 序列化      更新时间:2023-10-16

我有很多类,比如

class A
{
/*member variables*/
};
class B .. Class Z

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

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

我正在寻找解决方案,如接口,多态性等来解决这个问题。对于这类问题有什么设计模式吗?

第一个问题,读者和作者在同一个翻译单元上吗?

如果是,那么你可以有多态类。一个基类Message及其派生类。读取器将缓冲区读取为Message*,然后调用被覆盖的虚函数来获取有关派生类的所需信息。

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