В чем причина такого названия шаблона «Посетитель»?

Книга GoF по шаблону проектирования говорит о шаблоне Visitor следующее:

Посетитель позволяет определить новую операцию без изменения классов элементов, над которыми она работает.

Я прочитал паттерн из этой книги, но не смог понять интуицию, стоящую за названием этого паттерна Visitor. Почему он называется Visitor ?


person Geek    schedule 30.01.2013    source источник
comment
Потому что кто-то подумал, что это будет красивое имя?   -  person Bartek Banachewicz    schedule 30.01.2013


Ответы (1)


Есть такое популярное французское выражение/шутка: "Fais comme chez toi mais n'oublie pas que tu es chez moi", которое я бы перевел "Чувствуйте себя как дома, но не забывайте что это мой дом".

Думаю, сложно сказать, что именно имели в виду люди, которые изначально так назвали паттерн, но я думаю, что интуитивно это сходство с понятием «Гостеприимство».

Классы могут предоставлять доступ из своих публичных методов (дверь?) посетителю. Дело в том, что вместо того, чтобы пытаться предпринимать определенные действия в зависимости от того, кто является посетителем/гостем, класс просто делегирует соответствующее поведение посетителю (будьте дома...). То есть Посетитель будет использовать для этого публичное поведение своего класса Host (не забывайте, что это мой дом...).

person yechabbi    schedule 30.01.2013