Wzorzec projektowy odwiedzającego (wizytatora)
Cel:
Umożliwia zmianę operacji wykonywanych na elementach klasy bez zmiany struktury tej klasy.
Zalety:
- Dodawanie nieplanowanych dotychczas operacji jest stosunkowo proste
- Klasy mogą być mniejsze, ponieważ rzadko wykonywane operacje można definiować w bytach zewnętrzych
- Obiekty wizytatorów mogą gromadzić informacje o stanie w czasie odwiedzania kolejnych elementów. Taki "mobilny agent" może odwiedzać zdalne obiekty (np. serwery baz danych) i budować złożony wynik na podstawie zawartości rozproszonej bazy danych
Wady:
Wewnętrzna struktura obiektu kompozytowego jest niekiedy ujawniana wizytatorowi, co z oczywistych względów narusza regułę hermetyzacji obiektów.