Я экспортирую данные из иерархии композиций таким образом, что «сглаживает данные». Так, например, у меня есть 4 классов, каждый из которых имеет коллекцию следующего вниз по иерархии:Шаблон для операции, который нуждается в данных из всей иерархии компоновки
SchoolData -> StudentData -> ExamRecord
Я хочу, чтобы экспортировать его в уплощенной таким образом, что некоторые аспект
baker elementary,dan,3/2/2001,A
baker elementary,dan,3/3/2001,B
baker elementary,dan,3/3/2001,A
baker elementary,dan,3/5/2001,C
baker elementary,kim,3/5/2001,A
baker elementary,kim,3/5/2001,B
thompson middle school,alex,1/5/2001,A
где дата и оценка являются членами examrecord, имя студента является членом нитки StudentData, и название школы является членом строки SchoolData.
Очевидно, что я мог бы реализовать соответствующие геттеры и вытащить все данные на вызов функции верхнего уровня, который печатает все, но мне интересно, есть ли более элегантный способ сделать это.
Я использую C++, но язык не должен иметь большого значения.
Не уверен в этом. Я думаю, что шаблон Visitor предназначен для работы с иерархией, которая имеет разные подклассы объектов, но где все объекты являются подклассами одного и того же корневого класса, т. Е. Все они имеют что-то общее. Я не думаю, что случай в вопросе соответствует этой схеме. Если вы думаете, что это так, отправьте пример того, как он будет использоваться в фактическом случае, а не только диаграмма со страницы Википедии, отношение которой к реальной проблеме не очевидно. – ajb
@ajb Добавлен пример реализации. –