Muster: Composition
KompositumBearbeiten
Das Kompositum (engl. composition) wird dazu verwendet einen Baum an Objekten darzustellen.
ZweckBearbeiten
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.
UMLBearbeiten
EntscheidungshilfenBearbeiten
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.
ImplementationBearbeiten
Zur 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 MusterBearbeiten
Der Dekorator stellt ein Kompositum dar welche jeweils nur eine Referenz hält. Auch kann der Dekorator zur Erweiterung eines Blattes verwendet werden.
WeblinksBearbeiten
Wikipedia: Kompositum (Entwurfsmuster)