Visitor
Visitor Pattern
Das "visitor pattern" (Besucher) ist aus der Kategorie der Verhaltensmuster und ist eine Musterlösung dafür, einen Algorithmus von der Objektstruktur zu trennen, auf der er arbeitet. Durch die Kapselung ist es möglich, dass neue Operationen ohne Veränderung der betroffenen Elementklassen definiert werden.
Quelle: Wikipedia
Besucher (abstrakt): deklariert für jede Klasse konkreter Elemente eine Besuchsfunktion
Besucher1,… (konkret):
- implementiert Besuchsfunktionen
- Jede Besuchsfunktion ist ein Teil des Algorithmus, der auf die gesamte Objektstruktur angewendet wird.
- Lokaler Zustand dient als Kontext für den Algorithmus.
Element (abstrakt): deklariert eine Operation zum Empfang eines Besuchers
ElementA,… (konkret): implementiert den Empfang eines Besuchers
Objektstruktur: Kollektion oder zusammengesetzte Objektstruktur
Praxis Beispiel:
Ein Einkaufen in einem Supermarkt wird häufig als Bild für die Funktionsweise des Visitor Patterns verwendet: Die einkaufende Person sammelt im Einkaufswagen die gewünschte Ware, die bildlich für das Set an Elementen der Objektstruktur steht. An der Kasse angekommen fungiert das kassierende Personal als Visitor, der die Preise und das Gewicht der einzelnen Shopping-Güter (bzw. Elemente) scannt, um die anfallenden Gesamtkosten zu errechnen.
Vorteile
- Neue Operationen lassen sich leicht durch die Definition neuer Besucher hinzufügen.
- Verwandte Operationen werden im Besucher zentral verwaltet und von besucherfremden Operationen getrennt.
- Besucher können mit Objekten aus voneinander unabhängigen Klassenhierarchien arbeiten.
Nachteile
- Die gute Erweiterungsmöglichkeit der Klassen von Besuchern muss mit einer schlechten Erweiterbarkeit der Klassen der konkreten Elemente erkauft werden. Müssen neue konkrete Elemente hinzugefügt werden, so führt dies dazu, dass viele Besucher-besuche-Methoden implementiert werden müssen.
Standort Hannover
newcubator GmbH
Bödekerstraße 22
30161 Hannover
Standort Dortmund
newcubator GmbH
Westenhellweg 85-89
44137 Dortmund