homeSoftwaredesign Softwaredesign: Besucher Prof. Dr. Uwe Schmidt FH Wedel

Besucher

weiter

weiter

Besucher

Klassifizierung
objektbasiertes Verhaltensmuster
weiter
Zweck
Verzweigen über die Klassenhierarchien von 2 Argumenten
"double dispatch"
Entkoppeln der Verarbeitungsschritte von den Traversierungsschritten bei einer zusammengesetzten Struktur
--> Kompositum
weiter
Alias
Visitor
weiter
Motivation
gegeben: eine Baumstruktur

Ziel: die Knoten dieser Struktur auf unterschiedliche Arten verarbeiten

weiter
Beispiel
DOM Baum eines XML/HTML Dokuments
als abstrakter Syntaxbaum ausgeben
Text extrahieren
Attribute überprüfen
transformieren
...
weiter
Anwendbarkeit
viele unterschiedliche Objekte einer Hierarchie verarbeiten
 
UND
viele unterschiedliche Operationen auf einer Objektstruktur ausführen
zum Bündeln der Methoden eines Verarbeitungsprozesses in einer Klasse
Objektstruktur über die Lebensdauer eines Programms fest
Verarbeitungsarten aber variabel
wenn alle Objekte eines Kompositums verarbeitet werden sollen
nicht: gezieltes Selektieren
weiter
Struktur
Strukturdiagramm
weiter
Teilnehmer
  Element
abstrakte Klasse der zu verarbeitenden Objekte
  Element[A-B]
konkrete Klassen für die verschiedenen Ausprägungen
rufen jede eine Spezialmethode von Prozess auf für die spezielle Ausprägung
  Prozess
die Besucher-Schnittstelle der Verarbeitungsprozesse
enthält für jede Element-Klasse eine Methode
neue Elementklasse
--> Prozess-Schnittstelle erweitern
  Prozess[1-2]
konkrete Verarbeitungsprozesse
weiter
Konsequenzen
Erweiterung um neue Operationen auf der komplexen Struktur einfach
logisch zusammenhängende Operationen stehen gebündelt in einer Besucher-Klasse
Erweitern um neue Element-Klassen schwer
alle konkreten Besucher müssen erweitert werden
Besucher-Hierarchien mit default-Implementierungen erleichtern die Erweiterbarkeit
in den Besucher-Objekten kann Zustandsinformation angesammelt werden
Vorsicht bei Rekursion, wenn diese Zustandsinformation nicht global gültig ist
Besucher müssen auf die Daten der einzelnen Varianten (schnell) zugreifen können
--> Kapselung aufbrechen.
weiter
Beispiele
zusammengesetzte Figuren und Operationen auf diesen Figuren
weiter
Bekannte Verwendungen
Traversierung von Komposita
aus C: Abstraktion mit Funktionen für binäre Bäume
weiter
verwandte Muster
Datenstrukturen können mit Besuchern einfach verarbeitet werden
weiter
ist eine Vereinfachung
es gibt es nur eine Art zu verarbeitender Objekte, also nur eine Methode in der Kommando-Klasse
weiter

Letzte Änderung: 03.07.2013
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel