Schlagwort-Archive: Pattern

Java Design Patterns


Pattern sind eine unabhängige Anordnung physikalischer Teile auf eine Weise um ein Entwurfsproblem (das Entwurfsproblem oder -ziel kann technisch, ästhetisch oder sozialer Natur sein) zu lösen oder ein Entwurfsziel zu erreichen (physikalisch: nicht nur stofflich, auch geometrisch). Pattern können darüber hinaus auch als Beziehungen [zwischen geometrischen oder stofflichen „Parts“] oder als diese Parts an sich (z.B. „der Fensterplatz“) verstanden werden.Christopher Alexander

java2In der objektorientierten Programmierung wiederholen sich viele Problemstellungen. In diesem Zusammenhang möchte ich hier in diesem Blog näher auf die Verwendung von Design Patterns (deutsch Entwurfsmuster) in der modernen, objektorientierten Programmiersprache Java eingehen.

Als Design-Patterns bezeichnet man (wohlüberlegte) Designvorschläge für den Entwurf objektorientierter Softwaresysteme. Ein Design-Pattern deckt dabei ein ganz bestimmtes Entwurfsproblem ab und beschreibt in rezeptartiger Weise das Zusammenwirken von Klassen, Objekten und Methoden. Meist sind daran mehrere Algorithmen und/oder Datenstrukturen beteiligt. Design-Patterns stellen wie Datenstrukturen oder Algorithmen vordefinierte Lösungen für konkrete Programmierprobleme dar, allerdings auf einer höheren Abstraktionsebene. [Handbuch der Java-Programmierung]

Zu den bedeutsamsten Design Patterns zählen zum Beispiel

  • Interface,
  • Singleton,
  • Factory,
  • Iterator,
  • Delegate,
  • Composite und
  • Observer.


Komponenten eines Design Patterns

  • Name:
    • Der Name des Patterns ist sehr wichtig, da mit einem „klingendem“ Namen bereits die Verwendung bzw. die Lösung beschrieben werden kann.
  • Zweck/Aufgabe:
    • Zweck und Aufgabe beschreiben wann ein Design Pattern anwendbar ist.
  • Lösungsbeschreibung:
    • Struktur des Design Patterns
    • Konsequenzen des Design Patterns
    • Implementierung des Design Patterns

Klassifizierung von Design Patterns

Design Patterns sind in in 3 Klassen gliederbar:

  • Creational Patterns (Erzeugungsmuster)
  • Structural Patterns (Strukturmuster)
  • Behavioral Patterns (Verhaltensmuster)

Diese Gliederung wurde von der „Gang of Four“ definiert. Mitglieder der „GoF“ sind Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides die das Standardwerk „Design Patterns: Elements of Reusable Object-Oriented Software“, welches 1995 im Addison-Wesley Verlag erschienen ist, veröffentlichten.

Auswahl eines Entwurfsmusters

Es ist nicht immer leicht die richtige Wahl aus mehr als 20 Entwurfsmustern zu treffen. Einer der wichtigsten Aspekte, ist unter anderem der Name des Design Patterns. Folgende Schritte können bei der Auswahl helfen:

  • Wie löst das Entwurfsmuster Entwurfsprobleme?
  • Welchen Zweck soll das Entwurfsmuster erfüllen?
  • Gibt es ähnliche Entwurfsmuster?

Verwendung eines Entwurfsmusters

Die Anwendung des ausgewählten Musters erfolgt am besten Schritt-für-Schritt und sollte nur dann erfolgen, wenn die gebotene Flexibilität auch wirklich benötigt wird.

  1. Übersicht des Musters gewinnen
  2. Beziehungen zwischen Klassen und Objekten verstehen
  3. Klassen definieren
  4. Operationen implementieren

Ausblick

Design Patterns erlauben die Modellierung immer wieder kehrender Problemstellungen. Neue Analyse- und Design-Werkzeuge unterstützen die Verwendung von Mustern direkt durch Vorgabe von „Pattern-Templates“. Der anhaltende Trend zur Verwendung von Design Patterns wird sich fortsetzen. Komplexere Muster werden definiert und dienen den Entwicklern als wiederverwendbare Komponenten.