Muster: Composition
Aus Wikibooks
Inhaltsverzeichnis |
[Bearbeiten] Komposition
Die Komposition (engl. Composition) wird dazu verwendet einen Baum an Objekten darzustellen.
[Bearbeiten] Zweck
Wenn Objekte als Baum dargestellt werden sollen, so kann dieses Pattern verwendet werden. Dabei gibt es Objekttypen welche den Baum weiter verschachteln und solche die ein Blatt darstellen.
[Bearbeiten] UML
[Bearbeiten] Entscheidungshilfen
Hier wird auf das Pro und Kontra des Musters eingegangen. Das heißt wann macht es Sinn ein Muster einzusetzen bzw. wann solltest du es nochmals überdenken.
- Ein Blatt und ein Ast sehen durch ihr gemeinsames Interface immer gleich aus. Eine Unterscheidung muss explizit abgefragt werden. Für einen Algorithmus bedeutet das, er kann einfach durch einen Baum traversieren, solange bis keine weiteren Unterelemente mehr da sind. Die traversierung ist aber bedingt duch die Traversierungsmöglichkeit, heißt im Klartext, dass auch ein Blatt traversiert werden kann, aber keine Unterelemente bietet, es hat somit die gleiche Schnittstelle wie ein Ast. Sollen die Schnittstellen unterschieden werden, so muss explizit der Typ erfragt werden, wofür man wiederum keine gemeinsame Basisklasse benötigt.
[Bearbeiten] Implementation
Zur Implementierung dieses Pattern gehören:
- Ein Interface welches von allen Klassen des Baumes Implementiert wird.
- Mindestens eine NichtBlatt Klasse welche eine oder mehrere Referenzen zu dem Interface hält.
- Eine oder Mehrere BlattKlassen welche keine weiteren Referenzen halten.
[Bearbeiten] Verwandte Muster
Der Dekorator stellt eine Komposition dar welche jeweils nur eine Referenz hält. Auch kann der Dekorator zur Erweiterung eines Blattes verwendet werden.
[Bearbeiten] Weblinks
Wikipedia: Kompositum (Entwurfsmuster)


