Nano Hash - криптовалюты, майнинг, программирование

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

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

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

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


Ответы:


1

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

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

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

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

17.09.2008
  • Ваша ссылка на статью о выкройке на память не работает. У вас есть еще один хороший? 21.03.2015
  • Ничего себе, как 7 лет; и я даже не помню название статьи, извините 23.03.2015
  • хорошие новости, нашел с помощью кэша Google: webcache.googleusercontent.com/search?q=cache:www.ondotnet.com/ 23.03.2015

  • 2

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

    17.09.2008

    3

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

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

    17.09.2008
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..