Sie sind auf Seite 1von 13

Wegweisende Arbeiten der Softwaretechnik: Entwurfsmuster Erich Gamma

von Sebastian Ptzsch

bersicht

Erich Gamma Motivation Geschichte Entwurfsmuster Beispiele Zusammenfassung

Entwurfsmuster - Erich Gamma

1. Erich Gamma
Leiter des IBM OTI Lab in Zrich hat an der Universitt Zrich promoviert Eclipse Committer und verantwortlich fr die Eclipse Java Entwicklungsumgebung Mitglied des Eclipse Project Management Committee (PMC) Entwickler von JUnit mit Kent Beck Projekte: Eclipse, IBM Visual Age, JHotDraw, Et++

Dr. Erich Gamma IBM Research - OTI Labs Oberdorfstrasse 8 CH-8001 Zrich Schweiz Email: erich_gamma@oti.com

Entwurfsmuster - Erich Gamma

2. Motivation
Ende der 80er OO-Programmierung wird immer beliebter Groe Strke ist die Wiederverwendung flexible Entwrfe notwendig Gutes Design ist schwierig Viel Spielraum beim Entwurf
Schnittstellen Granularitt Flexibilitt Kapselung Abhngigkeiten

Anfnger sind oft berfordert Es dauert lange vom Anfnger zum OO-Experten

Entwurfsmuster - Erich Gamma

2. Motivation Was macht einen Experten aus?


Experten haben mehr Erfahrung Vorrat an Lsungen Viele Probleme hneln sich Oft existiert eine erprobte Standardlsung Standardlsungen knnen durch Entwurfsmuster beschrieben werden

Entwurfsmuster - Erich Gamma

3. Geschichte
1977 Christopher Alexander A Pattern Language Gute Architektur: Freiheit, Flexibilitt, Komfort, Harmonie, Haltbarkeit, 253 Muster, von der Region, Stadt, Stadtteile, Gebude, bis hin zur Innenausstattung Sehr theoretisch

Kathedrale von Reims

Entwurfsmuster - Erich Gamma

3. Geschichte
1987 Ward Cunningham und Kent Beck
Smalltalk Anfnger schneller anlernen

1992 Jim Coplien Advanced C++ Programming Styles and Idioms


Spezielle Muster fr C++

1995 Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides (Gang of Four) Design Patterns: Elements of Reusable ObjectOriented Software Heute zahlreiche Muster und Bcher

Ralph Johnson, Richard Helm, Erich Gamma, John Vlissides

Entwurfsmuster - Erich Gamma

4. Entwurfsmuster

4.1 Definition
Alexander: Jedes Muster beschreibt ein in unserer Umwelt bestndig wiederkehrendes Problem und erlutert den Kern der Lsung fr dieses Problem, so dass sie diese Lsung beliebig oft anwenden knnen, ohne sie jemals ein zweites Mal gleich auszufhren. In Design Patterns: Elements of Reuseable Object-Oriented Software: Entwurfsmuster sind Beschreibungen zusammenarbeitender Objekte und Klassen, die mageschneidert sind, im ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lsen.

Entwurfsmuster - Erich Gamma

4. Entwurfsmuster
Geforderte Eigenschaften: Useful, Useable and Used. Useful: - ermglichen es erfolgreiche Lsungen anzuwenden Useable: - sind anwendbar Used: - lsen tatschlich auftretende Probleme Was sind Entwurfsmuster nicht? Keine Tricks Keine Schablonen Werden entdeckt, sind keine neue Erfindung Bieten keine Implementierung an

Entwurfsmuster - Erich Gamma

4. Entwurfsmuster

Ziele
Wieder verwendbare Software Erweiterbare Software Gutes Design (Quality without a Name) Entwurfsrevisionen minimieren Vokabular fr Entwickler Erleichtern der Wartung und Einarbeitung

Entwurfsmuster - Erich Gamma

10

4. Entwurfsmuster
Ein Entwurfsmuster besteht aus 4 Teilen: Mustername: benennt kurz das Problem Problemabschnitt: beschreibt Kontext, indem das Muster angewendet werden kann Lsungsabschnitt: zeigt wie das Problem umgangen werden kann. Konsequenzen: beschreibt Vor- und Nachteile der Anwendung.

Entwurfsmuster - Erich Gamma

11

4. Entwurfsmuster 4.2 Einteilung


Originalkatalog umfasst 23 Muster Eingeteilt nach 2 Hauptkriterien: Aufgabe und Gltigkeitsbereich

Entwurfsmuster - Erich Gamma

12

4. Entwurfsmuster
Klassenbasierte Muster beziehen sich auf die Beziehungen zwischen Klassen und Unterklassen, sind statisch. Komponentenbasierte Muster beschreiben rekursive Beziehungen zwischen Objekten. Erzeugungsmuster: - Probleme beim Erzeugen von Objekten Verhaltensmuster: - Interaktion zwischen Objekten Strukturmuster: - Zusammensetzung von Objekten

Entwurfsmuster - Erich Gamma

13

4. Entwurfsmuster 4.3 Beschreibung


hilft beim Verstehen, Vergleichen und Verwenden der Muster Die GoF-Form Name
Er beschreibt wesentliche Funktion des Musters. Er sollte kurz und leicht zu merken sein.

Zweck
Was macht das Muster? Welche Probleme kann es lsen?

Motivation
Zeigt ein Beispielproblem, bei dem das Muster helfen kann.

Anwendbarkeit
Situationen in denen das Muster ntzlich ist. Woran erkenne ich solche Situationen.

Teilnehmer
Beschreibt die beteiligte Objekte.
Entwurfsmuster - Erich Gamma 14

4 Entwurfsmuster
Interaktion
Beschreibt Zusammenarbeit der Objekte.

Struktur
Eine grafische Darstellung (UML, OMT).

Konsequenzen
Beschreibt Vor- und Nachteile der Anwendung.

Implementierung
Tipps, Techniken, Fallen, sprachspezifische Aspekte?

Beispiele
Ein praktisches Beispiel aus der realen Welt.

Siehe Auch
Zeigt verwandte Muster. Empfiehlt eventuell Kombinationen mit anderen Mustern.

Entwurfsmuster - Erich Gamma

15

4. Entwurfsmuster
Musterbeziehungen

Entwurfsmuster - Erich Gamma

16

4. Entwurfsmuster Grnde fr Entwurfsrevisionen


Erzeugung von Objekte durch explizite Nennung der Namen Plattformabhngige Software Abhngigkeit von Reprsentation eines Objektes Abhngigkeit von spezifischen Operationen Algorithmische Abhngigkeiten Zu enge Kopplung zwischen Objekten Klassen sind schwer oder unmglich zu ndern Hinzufgen neuer Funktionalitt fhrt oft zu Unterklassenexplosion

Entwurfsmuster - Erich Gamma

17

5. Beispiele 5.1 Strategy


Zweck
Kapsle verschiedene Algorithmen fr das selbe Problem, um sie besser optimieren, variieren oder austauschen zu knnen.

Motivation
Filehandler, der Dateien komprimieren kann mit unterschiedlichen Kompressionsverfahren

Anwendbar, wenn
Man unterschiedliche Varianten eines Algorithmus verwenden will. Man Details eines Algorithmus verbergen will. Sich Klassen nur im Verhalten unterscheiden. Klassen mehrfach Bedingungsanweisungen enthalten.

Entwurfsmuster - Erich Gamma

18

5. Beispiele

Struktur

Entwurfsmuster - Erich Gamma

19

5. Beispiel
Strategy Schnittstelle
// Die Strategy Schnittstelle public interface Compressor { // Methode zum komprimieren File compress(File file); }

Alle Komprimierer mssen diese Schnittstelle implementieren.


// Eine konkrete Strategie zum komprimieren public class ZIPCompressor implements Compressor { // ZIP - Verfahren zum Komprimieren public File compress(File file) { // komprimiere mittels ZIP - Verfahren // ... return file; } } // eine andere Strategie public class HuffamCodeCompressor implements Compressor { // Huffman -Code - Verfahren public File compress(File file) { // komprimiere mit Huffman -Code Verfahren // ... return file; } } Entwurfsmuster - Erich Gamma 20

10

5. Beispiel
Der Kontext
// Unser Context public class FileHandler { // der Komprimierer private Compressor compressor; private File file; public FileHandler(Compressor compressor) { this.compressor = compressor; } void saveFile(){ // ... } // uebergib dem Komprimierer die Aufgabe File compress(File file) { return compressor.compress(file); } // ... }

FileHandler bietet Funktion zum komprieren an Welcher Algorithmus benutzt wird, hngt vom Typ des Komprimieres ab
Entwurfsmuster - Erich Gamma 21

5. Beispiel Anwendung
Abhngig vom Kontext kann man die verschiedenen Strategien nutzen
FileHandler ZIPFileHandler = new FileHandler(new ZIPCompressor()); // oder FileHandler HCFileHandler = new FileHandler(new HuffamCodeCompressor());

Entwurfsmuster - Erich Gamma

22

11

6. Zusammenfassung 6.1 Vorteile


Helfen Expertenwissen zu sammeln und zu verbreiten Bieten Entscheidungshilfen Helfen Anfngern zu Experten zu reifen Erleichtern das Erlernen von Klassenbibliotheken Frdern die Kommunikation Erleichtern Wartung und Pflege Sind wieder verwendbar, sprachunabhngig Ersetzen nicht das Denken Gefahr das Entwurf an Muster angepasst wird Hohe Einarbeitungszeit Erhhen Klassenanzahl Effizienz leitet Gefahr unntiger Flexibilitt
23

6.2 Nachteile

Entwurfsmuster - Erich Gamma

6. Zusammenfassung 6.3 Abschluss


Entwurfsmuster sind keine Regeln sondern Hilfsmittel Entscheidender Beitrag zur Kommunikation Direkt anwendbar 1999 Anklage gegen GoF (Showprozess): Crimes against Computer Science Anklagepunkte: Personenkult Anfnger, die sich wie Experten benehmen Missachtung traditioneller Standards

Entwurfsmuster - Erich Gamma

24

12

A Literatur
[1] http://www.c2.com/doc/oopsla87.html [2] Alexander, C., Ishkawa, S., and Silverstein, M., Eds. A Pattern Language. Oxford University Press, New York, 1977 [3] Coplien, J., Ed. Advanced C++ Programming Styles and Idioms. AddisonWesley, Reading, MA, 1992 [4] Gamma, E., Helm, R., Johnson, R., and Vlissides, J., Eds. Design Patterns: Abstractionand Reuse of Object-Oriented Design ECOOP 93, Lecture Notes in Computer Science 707. Springer, Berlin Heidelberg New York, 1993 [5] Gamma, E., Helm, R., Johnson, R., and Vlissides, J., Eds. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA, 1995

Entwurfsmuster - Erich Gamma

25

13

Das könnte Ihnen auch gefallen