Composite Pattern - an der HTWG Konstanz

Werbung
Composite Pattern
Martin Liersch - MSI
HTWG Konstanz
Beschreibung
●
●
●
●
Klassifikation: Strukturmuster
Zweck: Objekte zu einer Baumstruktur
zusammensetzen, um Teil/Ganzes-Hierarchien
auszudrücken
Anwendungsbeispiel: Hierarchie von
Grafikobjekten z.B. in Java / AWT (Container &
Component)
Deutsch: Kompositum
Verwandte Pattern
●
●
Noch nicht behandelt
●
Visitor
●
Command
Bereits behandelt
●
Decorator (z.B. Filter für Streams / Bilddaten)
Klassendiagramm
Baumstruktur
Teilnehmer
Komponente
●
●
●
Einzige, für den Client sichtbare Schnittstelle
Stellt alle nach außen sichtbare Funktionalität
zur Verfügung
Wird von Blatt und Kompositum implementiert /
erweitert
Teilnehmer
Kompositum
●
Implementiert oder erweitert Komponente
●
Eine Art Container
●
Kann kein oder mehrere Kinder (wiederum
Blätter oder Komposita) enthalten
Teilnehmer
Blatt
●
Implementiert oder erweitert Komponente
●
Darf keine Kind-Elemente enthalten
●
Kann als eine Art Knoten mit 0 Kindern
angesehen werden
Vor- und Nachteile
Vorteile
●
●
Einheitliche
Behandlung
(KomponentenInterface) von Blatt
und Kompositum
Leicht um neue
Blätter und Komposita
erweiterbar
Nachteile
●
Bei zu allgemeinem
Entwurf werden evtl.
Typ-Überprüfungen
zur Laufzeit nötig
(instanceof)
Beispiel
Dateisystem
●
Ein Dateisystem besteht aus Dateien
●
Verzeichnisse beinhalten Dateien
●
Beide können als „Dateisystemelement“ (Node /
iNode) bezeichnet werden
Beispiel
Dateisystem
●
●
●
Es gibt gewisse Operationen, welche auf
Dateien UND auf Verzeichnisse angewendet
werden können
Es existieren jedoch auch Operationen, welche
nur auf einen Typ anwendbar sind
Das Komponenten-Interface muss alle
Operationen beinhalten
Beispiel
Dateisystem
Vorgehensweise
●
Gegeben: 3 Klassen mit unterschiedlichen
Methoden
Generiere Komponente, welche später
alle Kinder implementieren
●
Beispiel
Dateisystem
Herunterladen