2014-02-19 5 views
0

У меня есть класс, представляющий Entity, класс Entity хочет предоставить метод десериализации, этот метод принимает строку xml и будет перестраивать объект. , который выглядит лучше? 1- у меня есть конструктор, который принимает параметр xmlString и там деSerilaize Entity. 2- имеющий конструктор без параметра, а затем метод deserialize для вызова с помощью xmlString. 3- статический метод в Entity принимает xmString как параметр и возвращает десериализованную Entity как вызов функции. или любым другим решением?Что такое хороший шаблон для сериализации объекта?

ответ

3

Ни один. Объект не должен касаться сериализации/десериализации себя вообще. Эти операции должны обрабатываться объектом, который предназначен для обработки логики сериализации.

Это не только упрощает работу класса Entity, но также открывает вашу архитектуру для гибкости и использования различных методов сериализации в будущем. Помните, что поведение развязки в вашем приложении хорошее.

+0

Вы имеете в виду, что каждый объект должен иметь другой объект для сериализации/десериализации? – Mojtaba

+0

@Mojtaba_Sarooghi - Нет. Сериализация полностью раздельна. Ваш класс 'Entity' не должен знать об этом. Между ними не должно быть связи. –

+0

Затем мне нужно выяснить, как я должен сериализовать каждый объект в сериализаторе (представьте, что я не хочу использовать атрибут), как мой объект может сказать сериализатору о свойствах, которые он хочет сериализовать? как насчет пользовательской циркулярной ссылки? Если я правильно понял (я так не думаю :-)), вы имеете в виду, что другой объект знает об/сериализации всего графа объектов Entity? то снова мы имеем связь (сериализатор должен знать о деталях Entity и его логике) – Mojtaba

Смежные вопросы