Шаблон для сохранения и записи в разные форматы файлов - PullRequest
5 голосов
/ 17 сентября 2008

Есть ли шаблон, который будет полезен при сохранении и загрузке файлов разных форматов?

Например, у меня сложная иерархия классов для документа, но я хочу поддерживать несколько разных форматов файлов.

Я думал о шаблоне «Стратегия», но я не убежден из-за необходимости доступа к каждой части объекта для ее сохранения и загрузки.

Ответы [ 3 ]

2 голосов
/ 17 сентября 2008

Вы можете использовать Шаблон посетителя , он позволяет перебирать вашу иерархию, выполняя различные операции в зависимости от узла, который обрабатывает Посетитель в настоящее время.

Плохая новость: вам, вероятно, нужно добавить хотя бы виртуальный метод в начало иерархии и, возможно, переопределить его в некоторых производных классах, и посетитель все равно получит доступ к данным узлов, но вы отделите формат файла, как разные посетители реализации могут записывать данные, собранные по-разному.

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

Редактировать: ссылка на оригинальную статью с образцом сувенира с использованием кеша Google

1 голос
/ 17 сентября 2008

Возможно, вы захотите взглянуть на шаблон Builder. GoF страница 97 ..

0 голосов
/ 17 сентября 2008

Как насчет (что-то на основе) шаблона метода ?

Один суперкласс знает, как разорвать иерархию классов, но полагается на свои подклассы, чтобы действительно сделать что-то полезное с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...