Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

34.2 Composite

34.2 Composite

Das Kompositum beschreibt eine Struktur, in welcher man versucht, alle Objekte eines Frameworks in eine Baumstruktur zu fassen. Dabei ist aber nicht gemeint, dass man eine riesige Vererbungshierarchie schafft. Viel mehr ist damit gemeint, dass man eine Art Container implementiert, der alle anderen Objekte und oder sich selbst aufnehmen kann. Diese Herangehensweise wird bei fast jeder grafischen Bibliothek für Benutzeroberflächen eingesetzt.

Vereinfachte Struktur des Composite Pattern

Man muss sich das wie ein Dateisystem auf einer Festplatt vorstellen. Die "Component" stellt dabei ein beliebiger Eintrag im Dateisystem dar. Des weiteren gibt es verschiedenste Dateiarten (jede Dateiart stellt ein spezielles "Control" dar) und Verzeichnisse, also ein "Composite". Verzeichnisse können dann wieder Dateien und Verzeichnisse enthalten.

Wie Sie anhand der Grafik sehen können, stellt das Kompositum klassische Containermethoden bereit, welche es erlauben, Komponenten zu verwalten, also Hinzufügen, Entfernen, Aktualisieren usw. Mehr Fähigkeiten und Eigenschaften sollte es nicht haben.

Was sind jetzt aber die Folgen dieses Entwurfsmusters? Zunächst müssen alle Klassen von einer gemeinsamen Basisklasse erben. Das hat zur Folge, dass man auf Kurz oder Lang nicht um virtuelle Methoden herumkommt, was wiederum ungünstig für die Ausführungsgeschwindigkeit ist. Des weiteren handelt es sich bei einem Kompositum um einen ganz allgemeinen Container. Aufgrund von Polymorphismus sind wir dann zwar in der Lage, alle erstellten Objektarten aufzunehmen, ohne ein Template benutzen zu müssen, aber das hat auch zur Folge, dass man am Ende nicht mehr weiß, was genau aufgenommen wurde. Jede Komponente benötigt also spezielle Informationen über sich selbst (z.B. den tatsächlichen Klassennamen als String).

Auf eine Implementierung verzichte ich an dieser Stelle, da ich zum einen schon gezeigt habe, wie man einen Container implementiert und zum anderen eher von diesem Pattern abrate, da man sich mehr Probleme als Vorteile einkauft.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012