Я реализую шаблон Builder , чтобы сгенерировать набор объектов.Затем эти объекты необходимо сериализовать в XML и десериализовать из XML.
Я знаю, как выполнять сериализацию и десериализацию, однако я не уверен, как интегрировать их в шаблон проектирования.
Например,предположим, мой код использует конструктор для создания продуктов foo и bar.Моей первой мыслью было поставить функцию сериализации для каждого из них, потому что каждый продукт знает, что сериализировать.
Моей следующей мыслью было поместить десериализацию в Director или ConcreteBuilder.
Что я делаюНе нравится, что функции сериализации и десериализации будут находиться в разных местах - одна в файле для объявления объектов foo и bar, а другая в файлах для чего-то другого.Я обеспокоен тем, что они могут перестать синхронизироваться друг с другом, когда я работаю над классами продуктов.
Моя последняя мысль была о том, чтобы Director или ConcreteBuilder выполнили сериализацию и десериализацию.Что мне не нравится в этом, так это то, что продукты должны знать, какой строитель использовался, или знать, кто такой директор.
Чтобы уточнить - существует две ситуации, когда продукт может быть создан:
- Пользователь нажимает кнопку в пользовательском интерфейсе
- Пользователь загружает проект XML