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
(Komponenten-
Interface) 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