Entwurfsmuster / Design Pattern: Eine Übersicht

avatar
(Edited)

Heutzutage und auch in der Zukunft werden hohe Anforderung an die Software und natürlich auch an den Softwareentwickler gestellt. Daher ist es wichtig, dass man sich einen Überblick über verschiedene Entwurfsmuster (Design Patterns) verschafft. Doch was sind Entwurfsmuster und wie können diese bei dem Entwurf objektorientierter Software helfen?

In den letzten Jahren wurden zwei Konzepte entwickelt, welche die Dokumentation von Entwurfserfahrungen und die Wiederverwendung von Entwürfen unterstützen. Dies sind:

  • Entwurfsmuster, die lokale, sich jeweils auf wenige Klassen beziehende Entwurfserfahrung der Wiederverwendung zugänglich machen, und
  • Rahmenwerke (frameworks), welche die Wiederverwendung von ganzen Entwürfen mit teilweiser Implementierung erlauben und wesentliche Aspekte einer Gruppe ähnlicher Anwendungssysteme umfassen (GUI-Entwicklung, KI unterstützung, ...)

Entwurfsmuster sind abstrakt und geben keine Implementierung vor. Damit unterscheiden sie sich von Rahmenwerken, die man im Extremfall allein durch Code definieren kann. Bei Entwurfsmustern werden höchstens konkrete Beispiele des Mustereinsatzes als Quellcode angegeben, niemals aber das Muster selbst. Auch haben Entwurfsmuster eine feinere Granularität als Rahmenwerke, so dass letztere mehrere Muster benutzen können, was umgekehrt nicht der Fall ist.
Abstraktion und Granularität machen Entwurfsmuster weniger mächtig, aber auch universeller einsetzbar als Rahmenwerke.

Rahmenwerke enthalten und instanziieren Entwurfsmuster. Die Dokumentation eines Rahmenwerks sollte klarmachen, welche Entwurfsmuster vorkommen und wie sie zusammenspielen. Ein Rahmenwerk kann in diesem Sinne als "Sprache" angesehen werden, deren Worte die verwendeten Entwurfsmuster sind. Damit erzwingt ein Rahmenwerk die Anwendung der Muster auf konstruktive Weise.

Entwurfsmuster lassen sich hinsichtlich ihrer Wirkung und Anwendungsbereich aufteilen.

entwurf.png
Abbildung: Entwurfsmuster

Bezüglich der Wirkung werden drei Arten von Entwurfsmustern unterschieden:

  • Erzeugende Muster, welche auf die Instanziierung, also den Prozess der Objekterzeugung abzielen
  • Strukturelle Muster, welche die Zusammensetzung von Strukturen aus mehreren Klassen bzw. Objekten zum Gegenstand haben
  • Verhaltensmuster, die Varianten des Zusammenspiels mehrerer unterschiedlicher Objekte widerspiegeln

Der Anwendungsbereich gibt an, ob sich ein Muster vornehmlich auf Klassen oder auf Objekte bezieht. “Klassenmuster“ behandeln hierbei die Beziehungen zwischen Klassen und ihren Unterklassen. Im Mittelpunkt dieser Kategorie steht die Generalisierungsbeziehung. Die aus diesen Mustern resultierenden Strukturen sind statisch und können zur Laufzeit nicht mehr geändert werden.

“Objektmuster“ zielen auf die Verbindungen zwischen Objekten ab, so dass die resultierenden Strukturen zur Laufzeit erstellt, geändert und wieder aufgehoben werden können. Sie verwenden hauptsächlich Assoziationen (Beziehungen), aber auch die Generalisierung
spielt eine gewisse Rolle.

In den nächsten Beiträgen werde ich auf einige Muster eingehen. Dabei soll der Zweck, die Anwendbarkeit und die Konsequenzen behandelt werden.

Quellen
[1] Erich Gamma, Richard Helm, Ralph Johnson und John M. Vlissides Design Patterns — Elements of Reusable Object-Oriented Software Addison Wesley, Reading, MA, 1994
[2] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal Pattern-Oriented Software Architecture — A System of Patterns J. Wiley & Sons, Chichester, 1996



0
0
0.000
1 comments