Muster: Composition
Kompositum
BearbeitenDas Kompositum (engl. composition) wird dazu verwendet einen Baum an Objekten darzustellen.
Zweck
BearbeitenWenn 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.
UML
BearbeitenEntscheidungshilfen
BearbeitenHier 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.
Implementation
BearbeitenZur Implementierung dieses Pattern gehören:
- Eine Schnittstelle, welche von allen Klassen des Baumes implementiert wird.
- Mindestens eine Nicht-Blatt-Klasse, welche eine oder mehrere Referenzen zu der Schnittstelle hält.
- Eine oder mehrere Blatt-Klassen, welche keine weiteren Referenzen halten.
Verwandte Muster
BearbeitenDer Dekorator stellt ein Kompositum dar welche jeweils nur eine Referenz hält. Auch kann der Dekorator zur Erweiterung eines Blattes verwendet werden.
Weblinks
BearbeitenWikipedia: Kompositum (Entwurfsmuster)