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.

Struktura