Шаблон проектирования Посетитель (Visitor) — это паттерн, который позволяет добавлять новые операции или действия к объектам, не изменяя их классы.
Суть паттерна заключается в том, что создается интерфейс посетителя (Visitor), который определяет методы, принимающие объекты разных классов в качестве аргументов. Каждый класс, объекты которого должны быть посещены, реализует интерфейс accept(принять), который вызывает соответствующий метод посетителя, передавая себя в качестве аргумента. Посетитель в свою очередь реализует все необходимые методы для обработки объектов каждого класса.
Таким образом, при добавлении нового оператора достаточно создать новый класс посетителя, реализующий необходимый метод для обработки этой операции, не изменяя код существующих классов.
Шаблон проектирования Посетитель полезен в случаях, когда есть большое количество классов с разными операциями, и когда эти операции нужно расширять или изменять без изменения самих классов.