Muster: Composition

Aus Wikibooks
Zur Navigation springen Zur Suche springen
Wikibooks buchseite.svg Zurück zu Fliegengewicht | One wikibook.svg Hoch zu Inhaltsverzeichnis | Wikibooks buchseite.svg Vor zu Model View Controller

Kompositum[Bearbeiten]

Das Kompositum (engl. composition) wird dazu verwendet einen Baum an Objekten darzustellen.

Zweck[Bearbeiten]

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.

UML[Bearbeiten]

Kompositum-pattern.png

Entscheidungshilfen[Bearbeiten]

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.

Implementation[Bearbeiten]

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 Muster[Bearbeiten]

Der Dekorator stellt ein Kompositum dar welche jeweils nur eine Referenz hält. Auch kann der Dekorator zur Erweiterung eines Blattes verwendet werden.

Weblinks[Bearbeiten]

Wikipedia: Kompositum (Entwurfsmuster)

Hoch zum Inhaltsverzeichnis Hoch zum Inhaltsverzeichnis