Шаблон
Composite
позволяет клиенту одинаково обрабатывать составные и отдельные объекты.Например, большинство каркасов компонентов пользовательского интерфейса использует составной шаблон.Это буквально part-whole
иерархия содержания.Вы можете обрабатывать текстовые объекты и графику так же, как в редакторе документов для экземпляра.
Шаблон Visitor
представляет операцию, выполняемую с элементами структуры объекта.Visitor
позволяет вам определить новую операцию, не изменяя классы элементов, с которыми она работает.Рассмотрим иерархию оборудования, которая является Composite
.Например, шасси может содержать диски и планарные платы, шина может содержать карты, а шкаф может содержать шасси и так далее.Вы можете рассчитать детали инвентаря и дать скидку на общую стоимость оборудования.Это может быть достигнуто с помощью Visitor
, и добавление некоторой новой операции / алгоритма может быть сделано без изменения иерархии оборудования.Вам просто нужно добавить новый Visitor
.В этом красота Visitor
рисунка.
Итак, вот связь между двумя шаблонами: Visitors
может использоваться для применения операции над структурой объекта, определенной шаблоном Composite
.