Шаблон для сохранения и записи в разные форматы файлов

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

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

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

Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Когда мы говорим о том, как сделать следующий шаг в качестве разработчика, мы должны понимать, что качество кода всегда является основным фокусом на...
Принципы SOLID - лучшие практики
Принципы SOLID - лучшие практики
SOLID - это аббревиатура, обозначающая пять ключевых принципов проектирования: принцип единой ответственности, принцип "открыто-закрыто", принцип...
5
0
1 534
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

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

Ответ принят как подходящий

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

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

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

Обновлено: ссылка на исходный Статья с выкройками на память с использованием кеша Google

Ваша ссылка на статью с выкройкой на память не работает. У тебя есть еще один хороший?

Stefan Bollmann 21.03.2015 20:24

Вау, как будто 7 лет; и я даже не помню название статьи, извините

Ricardo Amores 23.03.2015 13:53

хорошие новости, нашел с помощью кеша гугла: webcache.googleusercontent.com/search?q=cache:www.ondotnet.c‌ om /…

Ricardo Amores 23.03.2015 13:56

Другие вопросы по теме