Паттерн "Посетитель" позволяет добавлять новые операции к объектам без изменения их классов. Это достигается за счет введения посредника (посетителя), который выполняет операции над объектами. Вместо того чтобы вызывать методы у объекта напрямую, мы передаем ему посетителя, который может быть специализирован для выполнения определенных действий. Этот паттерн особенно полезен, когда у вас есть множество классов, которые должны реагировать одинаково на некоторые действия, но при этом имеют разные внутренние структуры и поведение. Вместо того чтобы модифицировать каждый класс отдельно, вы можете определить посетителя, который будет обрабатывать эти действия. Паттерн "Посетитель" используется в следующих случаях: Рассмотрим применение паттерна на примере посещение отдыхающим различных мест в городе. Создадим интерфейс посетителя. Создадим интерфейс абстрактного представления места. Реализуем классы конкретных мест для посещения. Создадим класс конкретного посетителя.
Посмотрим применение.