Java-Pattern Tutorial

Kapitel
Grundlagen Beispielcode UML-Darstellung Übung
Home

Einführung

GUI programmieren

Patterns

   MVC

Verzeichnisse

Entwurfmuster

Wie wir im letzten Beispiel der GUI-Programmierung die Trennung von Anwendungslogik und GUI kennen gelernt. Dieses Beispiel hat schon ein Entwurfmuster dargestellt.

Geschichte

Entwurfsmuster gibt es geschichtlich gesehen schon sehr lange. Gotische Kirchen wurden immer nach dem selben Baumuster entworfen. Die überdimensionalen Fenster dieser Kirchen waren nicht in der Lage, die Last des Kirchendaches zu tragen, also mussten Stützpfeiler angebracht werden, die die Last nach außen hin verteilte.

Abb. 3.1: Grundriss und Seitenansicht gotische Kirche

 

1995 sind die ersten Bücher aufgetaucht, die diese Entwurfmuster auf das objektorientierte Programmieren abbildeten. Wichtige Bücher sind bis heute "Design Patterns - Elements of Reusable OO Software" von Gamma, Helm, Johnson und Vlissides (auch: Gang of Four) und "A System of Patterns" von Buschmann, Meunier, Rohnert, Sommerled und Stal.

Definition

Ein Entwurfsmuster ist ein wiederkehrendes Designproblem in bestimmten Designzusammenhängen mit bewährtem allgemeinen Lösungsschema.

Entwurfmuster (kurz: EM) dienen den Entwicklern von objektorientierter Software als allgemeine Vorlage für bestimmte Designelemente. Dabei sind EM keine Codebeispiele, die eins-zu-eins übernommen werden können. Es ist dem Entwickler überlassen, in wie weit er dieses Muster realisieren möchte.

Idiome hingegen sind Codebeispiele, die auf bestimmte Programmiersprachen zugeschnitten sind und die übernommen werden können.

Beschreiben von Entwurfsmustern

Entwurfsmuster sollen von jedem Entwickler erstellbar und wiederverwendbar sein, darum gibt es eine Vorlage, wie ein EM beschrieben sein sollte.

Name Name des Entwurfmusters
Bekannt unter
(Known as)
Bekannte Namen, unter denen es in der Literatur behandelt wird.
Situation
(Context)
Situation, in der das Problem auftreten kann.
Problem Wiederkehrendes Problem, das in dieser Situation auftreten kann.
Lösung
(Solution)
Bewährte Lösung für das Problem:
  • Klassendiagramm
  • Ablauf- oder Sequenzdiagramm
  • Beispielcode
Nachteile und Nebenwirkungen Gefahren und Grenzen des Entwurfmusters.

 

Kategorien

Entwurfsmuster werden in Kategorien eingeteilt. Diese Kategorien orientieren sich an der Entwicklungsphase des Projekts. Es kann sich aber auch an der Charakteristik der Objekte orientieren.

Kategorien nach [Gamma et al., 1995]

  Zweck
(Purpose)
Erstellung
(Creational)
Struktur
(Structural)
Verhalten
(Behavioral)
Bezugspunkt
(Scope)
Klasse
(Class)
     
  Objekt
(Object)
Singleton Composite Observer

Erstellungsmuster (Creational Patterns)

Einsatz bei Instantiierung von Objekten. System wird unabhängig von der Erstellung, Zusammenstellung und Darstellung seiner Objekte.

Strukturmuster (Structural Patterns)

 Zusammenstellen von Klassen und Objekten, um größere Strukturen zu bilden.

Verhaltensorientierte Muster (Behavioral Patterns)

Beziehen sich auf Algorithmen und die Beziehung der Objekte untereinander.

Bezugspunkt

Stellt entweder die Klasse dar, also für die Analyse und Entwicklung des Systems oder das Objekt. In diesem Fall wird das Muster erst zur Laufzeit interessant.

Kategorien nach [Buschmann et al., 1996, S. 380]

Bezugspunkt
(Scope)
Architektonisch
(Architectural)
Design Idioms
...      
Interactive Systeme MVC    
...      
Erstellung
(Creation)
    Singleton
Strukturelle Auflösung
(Structural Decomposition)
  Composite  
...      


Architektonische Muster (Architectural Patterns)

Grundlegendes und strukturiertes Organisationsschema für NOCH NICHT entwickelte Softwaresysteme.

Design Muster (Design Pattern)

Schema für die Verbesserung von existenten Subsystemen oder Komponenten eines Softwaresystems.

Idiome

Low-level-Pattern. Patterns, die auf eine bestimmte Programmiersprache abgestimmt wurden.

Bezugspunkt

Stellt das Augenmerk auf die wesentliche Tätigkeit des Musters.

Fazit

Hiermit sind du Grundlagen über Patterns vermittelt. Es wird Zeit, dass wir uns um das erste Entwurfsmuster kümmern, dem MVC-Muster.