Копаясь в устаревшем проекте (C ++), который нужно расширить, я понял, что существует около 40 классов чтения / записи / синтаксического анализа. Они используются для чтения и записи данных различного типа (разных объектов) в разных форматах файлов (двоичные, hdf5, xml, текстовые, ...); один тип объекта обычно привязан к одному или двум форматам файлов. Классы для большинства из них просто не знают других. Интерфейс и наследование были, по-видимому, неизвестны писателю, а также шаблоны проектирования.
Мне кажется, это ужасный беспорядок. С другой стороны, я не совсем уверен, как справиться с этой ситуацией. По крайней мере, я буду извлекать интерфейсы. Я также хотел бы видеть, могу ли я иметь общий код в некоторых родительских классах, например, что специфично для читателя / писателя hdf5. Я также подумал, что абстрактный шаблон фабрики может помочь, но объект, который я получаю от читателей, совершенно другой.
Как бы вы справились с этой ситуацией? Как бы вы разработали классы? какой шаблон дизайна вы бы использовали, если таковые имеются? Вы бы разделили части для чтения и письма?