O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Design Patterns - Entwurfsmuster als Elemente wiederverwendbarer objektorientierter Software

Book Description

Entwurfsmuster als Elemente wiederverwendbarer objektorientierter Software

  • Der Bestseller von Gamma und Co. in komplett neuer Übersetzung
  • Der Klassiker für alle Programmierer
  • Das Standardwerk für die objektorientierte Softwareentwicklung

Mit Design Patterns lassen sich wiederkehrende Aufgaben in der objektorientierten Softwareentwicklung effektiv lösen. Die Autoren stellen einen Katalog einfacher und prägnanter Lösungen für häufig auftretende Aufgabenstellungen vor. Mit diesen 23 Patterns können Softwareentwickler flexiblere, elegantere und vor allem auch wiederverwendbare Designs erstellen, ohne die Lösungen jedes Mal aufs Neue selbst entwickeln zu müssen.

Die Autoren beschreiben zunächst, was Patterns eigentlich sind und wie sie sich beim Design objektorientierter Software einsetzen lassen. Danach werden die stets wiederkehrenden Designs systematisch benannt, erläutert, beurteilt und katalogisiert. Mit diesem Leitfaden lernen Sie, wie sich diese wichtigen Patterns in den Softwareentwicklungsprozess einfügen und wie sie zur Lösung Ihrer eigenen Designprobleme am besten eingesetzt werden.

Bei jedem Pattern ist angegeben, in welchem Kontext es besonders geeignet ist und welche Konsequenzen und Kompromisse sich aus der Verwendung des Patterns im Rahmen des Gesamtdesigns ergeben. Sämtliche Patterns entstammen echten Anwendungen und beruhen auf tatsächlich existierenden Vorbildern. Außerdem ist jedes Pattern mit Codebeispielen versehen, die demonstrieren, wie es in objektorientierten Programmiersprachen wie C++ oder Smalltalk implementiert werden kann. Das Buch eignet sich nicht nur als Lehrbuch, sondern auch hervorragend als Nachschlagewerk und Referenz und erleichtert so auch besonders die Zusammenarbeit im Team.

Aus dem Inhalt:

  • Einführung
  • Fallstudie
  • Erzeugungsmuster
    • Abstract Factory
    • Builder
    • Factory Method
    • Prototype
    • Singleton
  • Strukturmuster
    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Proxy
  • Verhaltensmuster
    • Chain of Responsibility
    • Command
    • Interpreter
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Template Method
    • Visitor

Über die Autoren:
Die Autoren sind auf dem Gebiet der objektorientierten Programmierung international anerkannte Experten.
Dr. Erich Gamma war maßgeblich an der Entstehung der integrierten Entwicklungsumgebung Eclipse beteiligt und leitet seit 2011 bei der Microsoft Corporation in Zürich ein Team, das die Produktion der Entwicklungsumgebung Microsoft Visual Studio unterstützt.
Dr. Richard Helm wurde 2005 mit dem ACM Programming Languages Award ausgezeichnet. Heute ist er Partner und Managing Director der Boston Consulting Group in Sydney.
Dr. Ralph Johnson ist Professor des Fachbereichs Informatik der Universität von Illinois in Urbana und Champaign.
Dr. John Vlissides (†2005) forschte am IBM Thomas J. Watson Research Center in Hawthorne, New York.

Stimmen zum Buch:

»Für Designer und Entwickler objektorientierter Software ist dieses Buch von großer Bedeutung! Design Patterns stellt einen geordneten Katalog bewährter Entwurfsmus-ter zur Strukturierung, Erstellung und Manipulation von Objekten vor. Am wichtigsten ist jedoch, dass die verschiedenen Design Patterns eindeutige Bezeichnungen erhalten, die ein gemeinsames Vokabular für die Arbeit im Team bereitstellen.«
- Rebecca J. Wirfs-Brock, Director, Object-Technology Services, Digitalk

»Design Patterns beendet die Debatte um die Wiederverwendung von Code und zeigt das entscheidende Element der Wiederverwendbarkeit von Software auf: wiederverwendbares Design. Sie werden feststellen, dass Sie diese Patterns im Nu in Ihren eigenen Designs einsetzen und wiederverwenden.«
- Steve Vinoski, Software Architect

Table of Contents

  1. Impressum
  2. Vorwort
  3. Geleitwort von Grady Booch
  4. Einleitung
  5. Kapitel 1: Einführung​
    1. 1.1 Was ist ein Design Pattern​?
    2. 1.2 Design Patterns​ im Smalltalk MVC​​
    3. 1.3 Beschreibung der Design Patterns​
    4. 1.4 Der Design-Patterns-Katalo​​g
    5. 1.5 Aufbau des Katalog​s
    6. 1.6 Die Anwendung von Design Pattern​s zur Behebung von Designproblem​en
      1. 1.6.1 Passende Objekte​ finden
      2. 1.6.2 Objektgranularität​ bestimmen
      3. 1.6.3 Objektschnittstellen​ spezifizieren
      4. 1.6.4 Objektimplementierungen​​ spezifizieren
      5. 1.6.5 Wiederverwendungsmechanismen​ einsetzen
      6. 1.6.6 Strukturen der Laufzeit​ und beim Kompilieren abstimmen​
      7. 1.6.7 Designänderungen berücksichtige​n
    7. 1.7 Auswahl eines Design Patterns​
    8. 1.8 Anwendung eines Design Patterns​
  6. Kapitel 2: Fallstudie: Erstellung eines Texteditors
    1. 2.1 Designprobleme​
    2. 2.2 Dokumentstruktu​r
      1. 2.2.1 Rekursive Komposition​
      2. 2.2.2 Glyphen​
      3. 2.2.3 Das Design Pattern Composite​ (Kompositum​)
    3. 2.3 Formatierun​g
      1. 2.3.1 Kapselung des Formatierungsalgorithmus​​
      2. 2.3.2 Die Unterklassen Compositor​​ und Composition​​
      3. 2.3.3 Das Design Pattern Strategy​ (Strategie​)
    4. 2.4 Ausgestaltung der Benutzeroberfläche​
      1. 2.4.1 Durchsichtige Umhüllung​ (Transparent Enclosure​)
      2. 2.4.2 Die Unterklasse MonoGlyph​​
      3. 2.4.3 Das Design Pattern Decorator​ (Dekorierer​)
    5. 2.5 Unterstützung mehrerer Look-and-Feel-Standards​
      1. 2.5.1 Abstrahierung​ der Objekterzeugung
      2. 2.5.2 Factories und Produktklassen
      3. 2.5.3 Das Design Pattern Abstract Factory​ (Abstrakte Fabrik​)
    6. 2.6 Unterstützung mehrerer Fenstersysteme​
      1. 2.6.1 Eignung des Design Patterns Abstract Factory​ (Abstrakte Fabrik​)
      2. 2.6.2 Kapselung von Implementierungsabhängigkeiten​
      3. 2.6.3 Die Klassenhierarchien​ Window​ und WindowImp​
      4. 2.6.4 Das Design Pattern Bridge​​ (Brücke​)
    7. 2.7 Userseitige Operationen​
      1. 2.7.1 Kapselung eines Requests​
      2. 2.7.2 Die Command-Klasse​​ und ihre Unterklassen
      3. 2.7.3 Die Funktion Undo​​ (Rückgängig​)
      4. 2.7.4 Befehlshistorie​​
      5. 2.7.5 Das Design Pattern Command​ (Befehl​)
    8. 2.8 Rechtschreibprüfung​ und Silbentrennung​
      1. 2.8.1 Zugriff auf verteilte Informationen
      2. 2.8.2 Kapselung von Zugriff und Traversierung
      3. 2.8.3 Die Iterator-Klasse​​ und ihre Unterklassen
      4. 2.8.4 Das Design Pattern Iterator​ (Iterator)
      5. 2.8.5 Traversierung​​ kontra Traversierungsaktionen
      6. 2.8.6 Kapselung der Analyse
      7. 2.8.7 Die Visitor-Klasse​​ und ihre Unterklassen
      8. 2.8.8 Das Design Pattern Visitor​ (Besucher​)
    9. 2.9 Zusammenfassung
  7. Design-Patterns-Katalog
  8. Kapitel 3: Erzeugungsmuster (Creational Patterns)​​
    1. 3.1 Abstract Factor​y (Abstrakte Fabr​ik)
    2. 3.2 Builde​r (Erbau​er)
    3. 3.3 Factory Meth​od (Fabrikmeth​ode)
    4. 3.4 Prototyp​e (Protot​yp)
    5. 3.5 Singleton (Singleton)
    6. 3.6 Weitere Erläuterungen zu den Erzeugungsmustern​
  9. Kapitel 4: Strukturmuster (Structural Patterns)​
    1. 4.1 Adapte​r (Adapter)
    2. 4.2 Bridg​e (Brüc​ke)
    3. 4.3 Composit​e (Komposit​um)
    4. 4.4 Decorato​r (Dekorier​er)
    5. 4.5 Facad​e (Fassa​de)
    6. 4.6 Flyweigh​t (Fliegengewic​ht)
    7. 4.7 Prox​y (Proxy)
    8. 4.8 Weitere Erläuterungen zu den Strukturmustern​
      1. 4.8.1 Adapter (Adapter, siehe Abschnitt 4.1) kontra Bridge (Brücke, siehe Abschnitt 4.2)
      2. 4.8.2 Composite (Kompositum, siehe Abschnitt 4.3) kontra Decorator (Dekorierer, siehe Abschnitt 4.4) kontra Proxy (Proxy, siehe Abschnitt 4.7)
  10. Kapitel 5: Verhaltensmuster (Behavioral Patterns)​
    1. 5.1 Chain of Responsibility​ (Zuständigkeitskette​)
    2. 5.2 Comman​d (Befe​hl)
    3. 5.3 Interprete​r (Interpreter)
    4. 5.4 Iterato​r (Iterator)
    5. 5.5 Mediato​r (Vermittl​er)
    6. 5.6 Memento (Memento)
    7. 5.7 Observer (Beobachter)
    8. 5.8 State (Zustand)
    9. 5.9 Strategy (Strategie)
    10. 5.10 Template Method (Schablonenmethode)
    11. 5.11 Visitor (Besucher)
    12. 5.12 Weitere Erläuterungen zu den Verhaltensmustern​
      1. 5.12.1 Variieren der Kapselung
      2. 5.12.2 Objekte als Argumente
      3. 5.12.3 Kommunikation: Kapseln oder Verteilen?
      4. 5.12.4 Absender und Empfänger entkoppeln
      5. 5.12.5 Zusammenfassung
  11. Kapitel 6: Schlusswort der Autoren
    1. 6.1 Was kann man von Design Patterns erwarten?
      1. 6.1.1 Ein gemeinsames Designvokabular​
      2. 6.1.2 Eine Dokumentations- und Lernhilfe
      3. 6.1.3 Eine Ergänzung zu existierenden Methoden
      4. 6.1.4 Zielsetzungen für Refactorings
    2. 6.2 Eine kleine Kataloggeschichte
    3. 6.3 Die Pattern-Gemeinde
      1. 6.3.1 Christopher Alexanders »Muster-Sprache​​«
      2. 6.3.2 Patterns in Softwaresystemen​
    4. 6.4 Eine Einladung
    5. 6.5 Ein abschließender Gedanke
  12. Anhang A: Glossar
  13. Anhang B: Notationshinweise
    1. B.1 Klassendiagramme​​
    2. B.2 Objektdiagramme​​
    3. B.3 Interaktionsdiagramme​​
  14. Anhang C: Fundamentale Klassen
    1. C.1 Die Klasse List​
    2. C.2 Iterator​
    3. C.3 ListIterator​
    4. C.4 Point​
    5. C.5 Rect​
  15. Anhang D: Quellenverzeichnis