我目前正在使用QDataStream来序列化我的课程。我有很多自己经常序列化的类。我应该派生QDataStream来创建自己的DataStream类吗?还是有比这更好的模式?请注意,我们的许多项目都使用这些自定义类,因此这样做可以使编码更容易。
另一种表达这个问题的方法是:当框架为您提供序列化类时,如何处理序列化自己的自定义类,这样您就不必记住每次序列化它们(增强可用性)并遵循最佳软件工程实践(以下模式)。
答案 0 :(得分:4)
这会很快失控。更好的方法是在operator<<
和您的班级之间定义operator>>
和QDataStream
。更简洁的可能是在您的类上只读取/写入QDataStream
的序列化方法(以便您可以调用,例如,obj->serialize(myStream)
)。
答案 1 :(得分:0)
我正在处理的当前方式如下:
我不是从QDataStream派生,而是为每个需要序列化的对象创建一个序列化器类。
例如,如果我有:
class MyOwnClass
然后我会创建一个名为:
的类class MyOwnClassSerializer
{
public:
static QByteArray const serialize(MyOwnClass const&);
};
我没有添加
的原因QByteArray serialize() const;
到class MyOwnClass
是因为人们可以使用MyOwnClass
而不依赖于Qt。此外,并非所有MyOwnClass
客户都对序列化课程感兴趣。
任何评论将不胜感激! =)