关于序列化、反序列化的设计问题
Design issue regarding serializing , deserializing
我有很多类,比如
class A
{
/*member variables*/
};
class B .. Class Z
我将这些类的对象复制到缓冲区(char*)中。现在我有了一个读取器对象,它连续轮询这个缓冲区,并将字节反序列化为对象并打印它们。我的问题是如何设计反序列化器类。
我的方法是将对象的类型作为头部嵌入,然后通过缓冲区发送。在读取缓冲区后,我知道了类型,然后我可以反序列化适当的对象。反序列化部分的问题是,现在它应该知道所有的消息类型,并根据类型调用适当的函数。我计划将此反序列化作为一个独立的实体,它不知道消息类型或反序列化代码,它不应该是它的一部分。
我正在寻找解决方案,如接口,多态性等来解决这个问题。对于这类问题有什么设计模式吗?
第一个问题,读者和作者在同一个翻译单元上吗?
如果是,那么你可以有多态类。一个基类Message
及其派生类。读取器将缓冲区读取为Message*
,然后调用被覆盖的虚函数来获取有关派生类的所需信息。
如果没有,则可以在消息中插入type-to-int代码。
相关文章:
- 如何知道QDataStream不能反序列化某些内容
- 增强基于 XML class_id的反序列化
- 提升反序列化对象具有 nan 或 -nan 值
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 如何反序列化数组?
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 通过 tcp 发送 C# 类并在 C++ 上反序列化
- 序列化和反序列化boost共享指针
- 在C++中使用POCO和grain对多个对象进行反序列化
- C++中整数向量的序列化/反序列化
- 使用 Json 转换器反序列化 WCF 服务中的C++字符串
- 使用 QDataStream 对原始数据进行反序列化
- 更改命名空间以自定义 Boost XML 的标记名称后的反序列化问题
- 提升反序列化问题:运行时输入流错误 (c++)
- 使用 istream >> 反序列化时出现问题
- 使用Boost:serialize反序列化指向派生类的指针时出现问题
- gSoap C++-C#反序列化问题
- 关于序列化、反序列化的设计问题
- BGL反序列化的另一个问题
- juce::String的boost反序列化问题,带有XML范围的存档