Шаблон для сохранения и записи в различные форматы файлов
-
09-06-2019 - |
Вопрос
Существует ли шаблон, который удобно использовать при сохранении и загрузке различных форматов файлов?
Например, у меня сложная иерархия классов для документа, но я хочу поддерживать несколько различных форматов файлов.
Я думал о шаблоне Стратегии, но я не уверен из-за необходимости доступа к каждой части объекта, чтобы сохранить и загрузить его.
Решение
Вы могли бы использовать Шаблон посетителя, это позволяет выполнять итерации по вашей иерархии, выполняя различные операции в зависимости от узла, который в данный момент обрабатывает Посетитель.
Плохие новости:вероятно, вам нужно добавить хотя бы виртуальный метод на вершину иерархии и, возможно, переопределить его в некоторых производных классах, и посетитель по-прежнему будет получать доступ к данным узлов, но вы разделите формат файла, поскольку разные реализации visitors могут записывать данные, собранные разными способами.
Взгляните также на узор на память если необходимо скрыть данные иерархии классов. Эта статья это также может быть полезно.
Редактировать:Ссылка на оригинал Изделие с рисунком на память использование кэша Google
Другие советы
Возможно, вы захотите взглянуть на шаблон Builder.Страница 97..
Как насчет (чего-то, основанного на) Шаблон метода pattern?
Один суперкласс знает, как разрушить иерархию классов, но полагается на свои подклассы, чтобы действительно сделать с ними что-то полезное.