У меня есть много классов, скажем,Дизайн вопрос о сериализации, десериализации
class A
{
/*member variables*/
};
class B .. Class Z
Я копирование объектов этих классов в буферную (символ *). Теперь у меня есть объект-читатель, который непрерывно обследует этот буфер и десериализует байты в объекты и печатает их. Мой вопрос заключается в том, как должен быть разработан класс десеризатора.
Подход, который у меня есть, заключается в том, чтобы вставить тип объекта в виде заголовка, а затем отправить его через буфер. После чтения буфера я знаю тип, а затем я могу десериализовать соответствующий объект. Проблема с десериализирующей частью теперь заключается в том, что она должна знать все типы сообщений и вызывать соответствующую функцию на основе типа. Я планирую эту десериализацию как отдельный объект, который не знает о типах сообщений или код для десериализации, он не должен быть его частью.
Я ищу решения, такие как интерфейсы, полиморфизм и т. Д., Чтобы решить эту проблему. Есть ли шаблон дизайна для такого рода проблем?
возможно это: http://www.boost.org/doc/libs/1_62_0/libs/serialization/doc/index.html будет полезно для вас (boost :: serialization);) –
Также изучите, нужно сделать это самостоятельно. Проверьте https://developers.google.com/protocol-buffers/, https://thrift.apache.org/ или https://avro.apache.org/. – PsiX