Der Entwurfsmusterkatalog nach Gamma ist zwar das Resultat
der Erfahrung vieler Experten aus vielen Jahren, aber keiner seiner Autoren
würde ihn als komplett bezeichnen. Er enthält grundlegende Entwurfsmuster,
die sicherlich oft Anwendung finden. Die Autoren laden die Leser sogar dazu ein, den
Katalog anzupassen und zu erweitern.
Weiterhin werden solche OOP-Techniken kurz erläutert, die über das entsprechende
Grundwissen (das beim Leser vorausgesetzt wird !) hinausgehen.
In einer großen Fallstudie wird ein WYSIWYG-Texteditor (bzw. Teile davon) entworfen.
Hier kommen bereits acht Entwurfsmuster zum Einsatz. Dieser Teil stellt einen guten
Einstieg in die Welt der Entwurfsmuster dar und ist gerade für unerfahrene Entwickler
lesenswert.
Die Klassifizierung der Muster ermöglicht es dem Benutzer, eigene (oder abgeguckte) Muster selbständig in den Katalog aufzunehmen. Weiterhin erleichtert sie das finden passender Muster im Katalog.
Gamma & Co. teilen die Muster auf zwei Weisen mit zwei bzw. drei Ausprägungen auf, was sechs verschiedene Kombinationen ermöglicht:
Erzeugungsmuster beschreiben Strukturen, die den Prozeß
der Objekterzeugung enthalten.
So wird das System von der konkreten Realisation entkoppelt. Das eigentliche Programm
arbeitet auf einer hohen Ebene der Abstraktion und delegiert die Erzeugung der Objekte
an die Erzeugungsstrukturen.
Im einfachsten Fall arbeitet ein Klient mit abstrakten Klassen und läßt die
konkreten Objekte von speziellen Strukturen erzeugen, die aus dem Kontext heraus die
jeweils richtigen Klassen kennen.
Hinter der Erzeugung kann aber auch ein komplexer Prozeß stehen, in dem mehrere
Objekte erzeugt und miteinander in Beziehung gesetzt werden müssen. (Objektkomposition !)
In diesem Fall ist es natürlich zwingend erforderlich, die Erzeugung zu delegieren,
da das eigentliche System sonst unnötig verkompliziert würde.
Strukturmuster zeigen auf, auf welche Art und Weise Klassen bzw.
Objekte zu größeren Strukturen zusammengefaßt werden können.
Nahezu alle der von Strukturmustern beschriebenen Strukturen entstehen zur Laufzeit,
beruhen also auf der Technik der Objektkomposition.
Verhaltensmuster beschreiben Strukturen, die am Kontrollfluß
innerhalb der Anwendung beteiligt sind. Sie konzentrieren sich also auf Algorithmen und
die Delegation von Zuständigkeiten.
Strukturen, denen ein klassenbasiertes Muster zu Grunde liegt, sind durch Klassenvererbung entstanden und sie sind somit zur Übersetzungszeit festgelegt.
Analog hierzu nutzen objektbasierte Muster die Objektdkomposition. Die von ihnen verwendeten Strukturen entstehen zur Laufzeit und sind dynamisch.
Dieser Unterschied ist, wie schon Abschnitt 2 zeigt, stets zu beachten. Zur Muster-Klassifizierung allerdings ist die Aufgabe um einiges geeigneter. Dies zeigt auch die Tatsache, daß die "Gang Of Four" ihren Katalog 1. nach der Aufgabe der Muster und 2. alphabetisch geordnet hat.
Die folgende Übersicht zeigt alle Muster entsprechend dieser Klassifikation. Hier
fällt auf, daß 19,5 von 23 Mustern objektbasiert sind. Dies zeigt, daß das
"große Ziel" des oo-Softwareentwurfes, die Flexibilität und
Erweiterbarkeit, auch in den Mustern verankert ist.
Entwurfsmuster |
Aufgabe |
|||
---|---|---|---|---|
Erzeugungsmuster |
Strukturmuster |
Verhaltensmuster |
||
Gültigkeitsbereich |
klassenbasiert |
Fabrikmethode |
Adapter |
Interpreter |
objektbasiert |
Abstrakte Fabrik |
Adapter |
Befehl |
Die folgende Abbildung zeigt die Beziehungen zwischen den Mustern auf. Sie basiert auf
den Informationen, die im Abschnitt über verwandte Muster einer jeden Musterbeschreibung
enthalten ist.