Посетитель
Visitor
Last updated
Was this helpful?
Visitor
Last updated
Was this helpful?
Идея поведенческого паттерна проектирования посетитель (Visitor) заключается в объединении различных стратегий в одну иерархию и предоставлении возможности объектам принимать посетителей (visitors) для выполнения определенных операций.
Расширяется функциональность объектов без изменения их структуры.
Посетитель позволяет выполнить нужные действия в зависимости от типов объектов.
возможность выполнять операции (зависящие от конкретных классов) над объектами многих классов с различными интерфейсами
объединение родственных операций в один класс
определение новых операций без изменения классов
разделение ответственности между классами: вынесение операций, находящихся в самих классах, в отдельные классы-посетители
значительное упрощение схемы использования
открытость кода для расширения: добавление новых классов-посетителей позволяет расширять функциональность без изменения существующего кода
упрощение поддержки разных типов объектов
расширение иерархии, добавление новых классов приводит к необходимости модификации посетителей
необходимость установления дружественных связей для обеспечения доступа к реализации
проблема связи на уровне базовых классов
объединение разных иерархий в одну (решение проблемы )
отсутствие оберточных функций (решение проблемы )
: посетители могут использоваться для выполнения операции над всеми объектами структуры, определенной с помощью паттерна компоновщик.
: посетитель может быть связан с паттерном посредник для обмена информацией между различными объектами в системе. Посредник может передавать посетителям необходимую информацию о состоянии объектов, чтобы они могли выполнить соответствующие операции.
: посетитель может быть связан с паттерном стратегия для предоставления различных стратегий обработки элементов структуры. Посетитель может быть реализован как одна из стратегий, которая может быть выбрана во время выполнения в зависимости от требуемой операции.