Java Reference
In-Depth Information
In einer zweiten Dimension differenziert man nach Gamma [Gam95] zwischen klas-
senbasierten und objektbasierten Mustern:
x
Bei
klassenbasierten Entwurfsmustern
werden die Beziehungen zwischen den
Objekten unter Einsatz der statischen
Vererbung
für die Klassen der Objekte
zur
Übersetzungszeit
festgelegt. Klassenbasierte Entwurfsmuster in diesem Buch sind
die Schablonenmethode, die Fabrikmethode und die klassenbasierte Variante des
Adapters. Die anderen in diesem Buch dargestellten Entwurfsmuster sind alle ob-
jektbasiert.
x
Bei
objektbasierten Entwurfsmustern
wird oftmals auch die Vererbung einge-
setzt. Der Typ eines Objektes kann in diesem Fall aber dynamisch
zur Laufzeit
ge-
ändert werden. Dies erreicht man beispielsweise, indem man gegen Abstraktionen
wie Schnittstellen oder abstrakte Basisklassen programmiert. Bei Einhaltung der
Verträge einer Methode kann dann zur Laufzeit an die Stelle einer Referenz vom
Typ einer abstrakten Basisklasse bzw. eines Interface nach Liskov stets eine Refe-
renz vom Typ einer abgeleiteten Klasse treten.
Im Folgenden wird auf die Kategorisierung "objektbasiert" oder "klassenbasiert" bei
Strukturmustern, Verhaltensmustern und Erzeugungsmustern eingegangen:
x
Strukturmuster
werden in zwei weitere Kategorien aufgeteilt. In der ersten Unter-
kategorie befinden sich die
klassenbasierten
Strukturmuster, die über die Eigen-
schaft der Vererbung statisch die Klassen der betrachteten Objekte einer Struktur
gewinnen. Das einzige Beispiel in diesem Buch für ein klassenbasiertes Struktur-
muster ist der klassenbasierte Adapter. Die zweite Unterkategorie bilden die
objekt-
basierten
Strukturmuster. Das Proxy-Muster ist ein Beispiel für ein objektbasiertes
Strukturmuster. Ein Proxy dient hierbei als Stellvertreter für ein anderes Objekt.
Strukturmuster
befassen sich mit der Zusammensetzung und
der Granularität von Klassen und Objekten.
x
Auch bei
Verhaltensmustern
wird zwischen den
klassenbasierten
und den
ob-
jektbasierten
Verhaltensmustern unterschieden. Klassenbasierte Verhaltensmuster
verwenden Vererbung, um statisch das gewünschte Verhalten zu gewinnen. Das
einzige Beispiel in diesem Buch für klassenbasierte Verhaltensmuster ist die Scha-
blonenmethode. Objektbasierte Verhaltensmuster dagegen können beispielsweise
das liskovsche Substitutionsprinzip verwenden, um durch Austausch von Objekten
zur Laufzeit das Verhalten abzuändern. Ein Beispiel für den dynamischen Aus-
tausch des Verhaltens ist das Strategie-Muster.
Verhaltensmuster
befassen sich mit den Zuständigkeiten und
der Zusammenarbeit zwischen Klassen bzw. Objekten. Sie be-
schreiben Interaktionen zwischen Objekten.
Ɣ Erzeugungsmuster
verbergen die Erzeugung von Objekten in einer Operation bzw.
einer Klasse.
Klassenbasierte
Muster wie die Fabrikmethode verwenden Operati-
onen, deren Klasse durch Vererbung statisch gewonnen wurde.
Objektbasierte
Er-
Search WWH ::
Custom Search