Java Reference
In-Depth Information
4.16 Das Verhaltensmuster Besucher
4.16.1
Namen/Alternative Namen
Besucher (engl. visitor).
4.16.2
Problem
Unter einer Objektstruktur wird im Folgenden ein - mehr oder weniger zusammenhän-
gender - Satz von Objekten unterschiedlicher Klassen verstanden. Häufig tritt die Situ-
ation ein, dass Operationen realisiert werden müssen, die auf allen Objekten einer
solchen heterogenen Objektstruktur aus verschiedenen Klassen arbeiten müssen und
nicht nur auf einem einzelnen Objekt. Dabei sollen überdies lokale Daten aller Objekte
der Objektstruktur zentral ausgewertet werden. Natürlich ist es möglich, Teilfunktionali-
täten lokal in jedem einzelnen Objekt abzuhandeln. Es wird aber dennoch ein zen-
trales Objekt zum Zusammenführen der Daten aller Objekte benötigt.
Das Besuchermuster soll es erlauben, die Daten aller Objekte ei-
ner Objektstruktur zentral auszuwerten.
4.16.3
Lösung
Das Besucher-Muster kapselt die Logik einer Operation, die Daten von Objekten ver-
schiedener Klassen, die sich innerhalb einer Objektstruktur befinden, benötigt, kom-
plett in einem separaten Besucher-Objekt, einem sogenannten Kontrollobjekt. Das Be-
sucher-Muster ist ein objektbasiertes Verhaltensmuster.
Die Daten tragenden Objekte, die im Rahmen der Operation besucht werden müssen,
sind in einer Objektstruktur angeordnet. Als einfaches Beispiel sei hier eine Liste von
Objekten genannt. Auf die Aspekte anderer, insbesondere von komplizierteren Objekt-
strukturen wird in Kapitel 4.16.3.3 eingegangen.
Ein wichtiges Kennzeichen des Besucher-Musters ist, dass die
Objekte der Objektstruktur Instanzen von unterschiedlichen Klas-
sen sein können. Die Klassen, von denen sich Instanzen in der
Objektstruktur befinden, werden im Folgenden als Element-Klas-
sen bezeichnet.
Die bereits bestehenden Element-Klassen müssen um eine akzeptieren() -Metho-
de ergänzt werden, wenn sie diese nicht bereits schon aufweisen. Der Zweck der Me-
thode akzeptieren() wird im Folgenden noch ausführlich erläutert. Sieht man von
der Erstellung der akzeptieren() -Methode in den zu besuchenden Objekten ab, so
bleiben die bestehenden Element-Klassen unverändert.
Search WWH ::




Custom Search