У меня что-то очень похожее реализовано для нашей системы. Мне нужен был способ составить иерархию геометрических объектов и отобразить их в объеме. Я использовал составной шаблон для составления моего описания (корнем был Node, а потом производным потомком был CompositeNode (список узлов).
В CompositeNode есть метод accept (), который принимает посетителя (Visitor), а затем внутри accept () вы делаете visitor-> visit (this).
Таким образом, ваша иерархия посетителей имеет базовый класс как NodeVisitor и производные посетители, такие как RenderVisitor (отображает объекты), ReportVisitor (помещает информацию об узле в текст). Ваш базовый класс должен принимать как базовые, так и специализированные типы узлов.
Так что да, комбо работает, и у меня есть рабочий код, но я согласен, что дизайн требует больше усилий, чем то, что вы читали бы онлайн (пример Wiki или игрушка).
Надеюсь, это поможет