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

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

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

Затем я хочу, чтобы эти данные выводились в несколько форматов файлов. Я мог бы сделать что-то вроде

savefile_formatA(DataClass* pDataClass, ofstream& fout);
savefile_formatB(DataClass* pDataClass, ofstream& fout);

, за исключением того, что функции должны затем видеть частные переменные-члены DataClass . Я мог бы, конечно, просто сделать savefile_formatXYZ () дружественные функции, но тогда мне нужно было бы добавить объявление друга для каждого другого формата.

Есть ли стандартный шаблон проектирования для решения подобных задач? Как бы вы решили эту проблему?

Спасибо!

6
задан slaphappy 26 July 2011 в 09:32
поделиться