Entwurfsmuster von Kopf bis Fuß - Eric Freeman - E-Book

Entwurfsmuster von Kopf bis Fuß E-Book

Eric Freeman

0,0

Beschreibung

Jetzt aktualisiert und erweitert: das Standardwerk zu Entwurfsmustern

  • »Dieses Buch vereint Spaß, herzhaftes Lachen, profundes technisches Verständnis und geniale Praxistipps zu einem denkwürdigen Lesegenuss.« Richard Helm, Gang of Four
  • Softwareentwickler wollen das Rad nicht neu erfinden: Mit Entwurfsmustern können Sie von den Erfahrungen und Best Practices anderer profitieren
  • Die Design Patterns werden detailliert und verständlich erklärt, inklusive Herleitung und geeigneten Anwendungsfällen

Dieses Buch ist ein moderner Klassiker zum Thema Entwurfsmuster. Mit dem einzigartigen Von-Kopf-bis-Fuß-Lernkonzept gelingt es den Autoren, die anspruchsvolle Materie witzig, leicht verständlich und dennoch gründlich darzustellen. Jede Seite ist ein Kunstwerk für sich, mit vielen visuellen Überraschungen, originellen Comic-Zeichnungen, humorvollen Dialogen und geistreichen Selbstlernkontrollen. Spätestens, wenn es heißt "Spitzen Sie Ihren Bleistift", wird Leser:innen klar, dass bei diesem Buch Mitmachen gefragt ist.
Das ist nicht nur unterhaltsam, sondern auch effektiv: Komplexe Sachverhalte lassen sich nach Erkenntnis der modernen Lernwissenschaft am gründlichsten über mehrere verschiedene Kanäle verstehen. Das Buch verspricht Ihnen daher nicht nur Spaß beim Lernen, Sie werden nach der Lektüre auch die Herausforderungen des Softwaredesigns meistern können.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 452

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.

Beliebtheit




Entwurfsmuster von Kopf bis Fuß

Eric FreemanElisabeth Robson

mitKathy SierraBert Bates

Deutsche Übersetzung von

Jørgen W. Lang

Eric Freeman, Elisabeth Robson, Kathy Sierra und Bert Bates

Lektorat: Alexandra Follenius

Übersetzung: Jørgen W. Lang

Korrektorat: Sibylle Feldmann, www.richtiger-text.de

Satz: Ulrich Borstelmann, www.borstelmann.de

Herstellung: Stefanie Weidner

Umschlaggestaltung: Ellie Volckhausen, Michael Oréal, www.oreal.de

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Print     978-3-96009-162-2

PDF      978-3-96010-503-9

ePub     978-3-96010-504-6

mobi     978-3-96010-505-3

3. Auflage 2022, Übersetzung der 2. englischen Auflage

Translation Copyright für die deutschsprachige Ausgabe © 2021 by dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Authorized German translation of the English edition of Head First Design Patterns, ISBN 978-1-492-07800-5 © 2021 Eric Freeman and Elisabeth Robson. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«.

O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.

Bei der Erstellung dieses Buchs wurden keinerlei Enten oder Truthähne verletzt.

Die Mitglieder der »Gang of Four« haben uns die Erlaubnis erteilt, ihre Fotos in diesem Buch abzudrucken. Doch, sie sehen wirklich so gut aus.

Hinweis:

Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt.

Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.

Schreiben Sie uns:

Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag noch Übersetzer können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Zu diesem Buch – sowie zu vielen weiteren O’Reilly-Büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei oreilly.plus:+:

www.oreilly.plus

Für die Gang of Four, deren Fachwissen und deren Erfahrung beim Beschreiben und Erklären von Entwurfsmustern die Welt des Softwaredesigns für immer verändert und das Leben von Entwicklern weltweit verbessert haben.

Aber mal im Ernst – wann kommt die zweite Auflage eures Buchs? Schließlich ist es erst fünfundzwanzig Jahre her!

Die Autor:innen

Die Autor:innen von >>Entwurfsmuster von Kopf bis Fuß<<

Eric wurde von seiner Mitstreiterin bei der Entwicklung der Von-Kopf-bis-Fuß-Reihe, Kathy Sierra, bezeichnet als »eines dieser seltenen Individuen, die fließend die Sprache, Praxis und Kultur verschiedener Lebenswelten wie die der Hipster-Hacker, Unternehmensdirektoren, Ingenieure und Think-Tanks beherrschen«.

Von Haus aus ist Eric Informatiker, seinen Doktortitel erlangte er an der Yale University. Beruflich war er als CTO von Disney Online & Disney.com bei der Walt Disney Company tätig.

Aktuell ist er Kodirektor der Head-First-Reihe, die in Deutschland als Von-Kopf-bis-Fuß-Reihe bekannt ist. Bei der von ihm mitgegründeten Online-Lernplattform WickedlySmart widmet er seine Zeit der Erstellung von Print- und Video-Inhalten, die über die führenden Bildungskanäle vertrieben werden.

Erics Bücher in der Von-Kopf-bis-Fuß-Reihe Bücher umfassen die Themen Entwurfsmuster, HTML & CSS, JavaScript- und HTML5-Programmierung sowie das Programmierenlernen.

Eric lebt in Austin, Texas.

Elisabeth ist Softwareentwicklerin, Autorin und IT-Trainerin. Seit ihren Studententagen an der Yale University, wo sie ihren Master in Informatik erworben hat, ist sie mit Leib und Seele Informatikerin.

Aktuell ist sie Mitbegründerin von WickedlySmart, wo sie Bücher, Artikel, Videos und mehr erstellt. Zuvor hat sie als Director of Special Projects bei O’Reilly Media Präsenz-Workshops und Onlinekurse zu einer Vielzahl von technischen Themen gestaltet und eine Leidenschaft für das Entwerfen von Lehrsystemen entwickelt, die Menschen helfen, Technologien zu verstehen.

Wenn sie nicht vor ihrem Computer sitzt, geht Elisabeth, stets die Kamera in Griffweite, in die freie Natur, um zu wandern oder Rad oder Kajak zu fahren, oder sie widmet sich der Gartenarbeit.

Die Köpfe hinter dieser Reihe

(und Mitverschwörer:innen bei diesem Buch)

Kathy interessiert sich für Lerntheorie seit ihrer Zeit als Spieleentwicklerin für Virgin, MGM und Amblin’ und als Dozentin für New Media Authoring an der UCLA. Sie war Master-Java-Trainerin für Sun Microsystems, und sie gründete JavaRanch.com (jetzt CodeRanch.com), das in den Jahren 2003 und 2004 den Jolt Cola Productivity Award gewann.

Im Jahr 2015 erhielt sie den Electronic Frontier Foundation’s Pioneer Award für ihre Arbeit zur Schaffung kompetenter Nutzer und den Aufbau nachhaltiger Gemeinschaften.

In jüngster Zeit konzentriert sich Kathy auf modernste Bewegungswissenschaften und das Coaching zum Erwerb von Fähigkeiten, bekannt als Ecological Dynamics oder »Eco-D«. Ihre Arbeit, bei der sie Eco-D für das Training von Pferden einsetzt, führt zu einem weitaus humaneren Ansatz in der Reitkunst, was die einen erfreut (und die anderen, traurigerweise, verwirrt). Die Pferde, die das Glück haben, dass ihre Besitzer Kathys Ansatz anwenden, sind zufriedener, autonomer, gesünder und sportlicher als ihre traditionell trainierten Artgenossen.

Sie können Kathy Sierra auf Instagram folgen: @pantherflows.

Bevor Bert Autor wurde, war er Entwickler, spezialisiert auf KI der alten Schule (hauptsächlich Expertensysteme), Echtzeit-Betriebssysteme und komplexe Planungssysteme.

Im Jahr 2003 schrieben Bert und Kathy Head First Java und starteten die Head-First-Reihe. Seitdem hat er weitere Java-Bücher geschrieben und Sun Microsystems und Oracle bei vielen ihrer Java-Zertifizierungen beraten. Außerdem hat er Hunderte von Autor:innen und Lektor:innen darin geschult, Bücher zu schreiben, die gute Lerninhalte bieten.

Bert ist Go-Spieler und hat 2016 mit Entsetzen und Faszination zugesehen, wie AlphaGo Lee Sedol besiegt hat. In letzter Zeit nutzt er Eco-D (Ecological Dynamics), um sein Golfspiel zu verbessern und seinen Papagei Bokeh zu trainieren.

Bert und Kathy haben das Privileg, Beth und Eric seit 16 Jahren zu kennen, und die Head-First-Reihe hat das große Glück, sie zu den wichtigsten Mitwirkenden zu zählen.

Sie können Bert unter CodeRanch.com eine Nachricht schicken.

DerÜbersetzer

Über den Übersetzer dieses Buchs

Jørgen W. Lang lebt und arbeitet als freier Autor (»CSS Kochbuch«) und Übersetzer in Oldenburg/Niedersachsen. Mitte der Neunzigerjahre des vergangenen Jahrhunderts begann er, sich mit dem damals noch jungen World Wide Web und seinen Möglichkeiten zu beschäftigen. Pünktlich zum Jahrtausendwendejahr erschien seine erste Übersetzung für den O’Reilly Verlag. Mittlerweile ist der Umfang auf mehr als 10.000 Seiten angewachsen.

Mit großer Energie und Ausdauer bringt Jørgen seit fast schon zwei Jahrzehnten Webseiten bei, das zu tun, was von ihnen erwartet wird – unabhängig davon, auf welchem Gerät sie betrachtet werden (elektrische Zahnbürsten ausgenommen).

Das zweite Standbein von Jørgen Lang ist die Musik. Außerhalb der Welt der semantischen Elemente, Selektoren und Objekte hat er sich einen Namen als hervorragender Gitarrist, Sänger, Komponist und Arrangeur gemacht und kann auf eine Vielzahl veröffentlichter Alben und mehrere Hundert Konzerte in aller Welt (z. B. für die UNESCO in Seoul) zurückblicken.

Zur deutschen Übersetzung

Eine Herausforderung bei der Übersetzung von »Head First Design Patterns« war, möglichst alle verwendeten Bilder und Metaphern ins Deutsche zu übertragen, bei den Fachausdrücken aber auf in der Praxis ungebräuchliche Übersetzungen zu verzichten. So werden wir im Buch zwar Fabriken bauen, aber unser Entwurfsmuster heißt Factory, wir werden Beobachter entsenden, das Entwurfsmuster aber Observer nennen. Wir hoffen, dass unsere deutschen Leserinnen und Leser die Entwurfsmuster so leichter vor Augen haben, aber dennoch wissen, wie der Profi diese Muster in der Praxis bezeichnet.

Inhaltsverzeichnis

Der Inhalt (im Überblick)

 

Einführung

1

Willkommen bei den Entwurfsmustern: Einführung in Entwurfsmuster

2

Ihre Objekte auf dem Laufenden halten: Das Observer-Muster

3

Objekte dekorieren: Das Decorator-Muster

4

In der OO-Bäckerei …: Das Factory-Muster

5

Einmalige Objekte: Das Singleton-Muster

6

Aufrufe verkapseln: Das Command-Muster

7

Anpassungsfähigkeit beweisen: Die Adapter- und Facade-Muster

8

Algorithmen verkapseln: Das Template Method-Muster

9

Erfolgreiche Collections: Die Iterator- und Composite-Muster

10

Der (Zu-)Stand der Dinge: Das State-Muster

11

Objektzugriff kontrollieren: Das Proxy-Muster

12

Muster von Mustern: Zusammengesetzte Muster

13

Muster in der wahren Welt: Schöner leben mit Mustern

14

Anhang: Übrig gebliebene Muster

Inhalt (jetzt ausführlich)

Einführung

Ihr mustergültiges Gehirn. Sie versuchen, etwas zu lernen, und Ihr Hirn tut sein Bestes, damit das Gelernte nicht hängen bleibt. Es denkt nämlich: »Wir sollten lieber ordentlich Platz für wichtigere Dinge lassen, z. B. für das Wissen, welche Tiere einem gefährlich werden könnten, oder dass es eine ganz schlechte Idee ist, nackt Snowboard zu fahren.« Tja, wie schaffen wir es nun, Ihr Gehirn davon zu überzeugen, dass Ihr Leben davon abhängt, etwas über Entwurfsmuster zu wissen?

Für wen ist dieses Buch?

Wir wissen, was Sie gerade denken

Und wir wissen, was Ihr Gehirn gerade denkt

Metakognition: Nachdenken übers Denken

Machen Sie sich Ihr Hirn untertan

Fachgutachter

Danksagungen

Einführung in Entwurfsmuster

1Willkommen bei den Entwurfsmustern

Irgendjemand hat Ihr Problem schon gelöst. In diesem Kapitel lernen Sie, warum (und wie) Sie die Weisheit und die Lehren anderer Entwickler nutzen können, die die gleichen Designprobleme bereits hatten und die Reise überlebt haben. Bevor dieses Kapitel zu Ende ist, kümmern wir uns um die Verwendung und die Vorteile der Entwurfsmuster, sehen uns ein paar grundsätzliche objektorientierte (OO-)Designprinzipien an und gehen mit Ihnen zusammen ein Beispiel für die Funktionsweise von Entwurfsmustern durch. Die beste Möglichkeit, die Muster zu verwenden, ist, sie in Ihr Gehirn zu laden und dann die Stellen in Ihren Designs und bestehenden Programmen zu erkennen, an denen der Einsatz sinnvoll ist. Im Gegensatz zur Codewiederverwendung können Sie mit Entwurfsmustern die Erfahrung anderer Menschen wiederverwenden.

Es begann mit einer einfachen SimUDuck-App

Aber jetzt sollen die Enten FLIEGEN können

Aber irgendetwas ging furchtbar schief …

Joe denkt über Vererbung nach …

Wie wäre es mit einem Interface?

Was würden Sie an Joes Stelle tun?

Die einzige Konstante in der Softwareentwicklung

Das Problem eingrenzen

Veränderliches und Unveränderliches voneinander trennen

Das Entenverhalten entwerfen

Das Entenverhalten implementieren

Das Entenverhalten integrieren

Den Entencode testen

Verhalten dynamisch festlegen

Das große Ganze: Verkapseltes Verhalten

HAT-EIN ist besser als IST-EIN

Da wir gerade von Entwurfsmustern sprechen …

Im Bistro um die Ecke aufgeschnappt …

Im Büro nebenan aufgeschnappt …

Die Stärke eines gemeinsamen Mustervokabulars

Wie setze ich Entwurfsmuster ein?

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Das Observer-Muster

2Ihre Objekte auf dem Laufenden halten

Sie wollen interessante Ereignisse doch nicht verpassen, oder? Es gibt ein Muster, das unsere Objekte auf dem Laufenden hält, wenn etwas für sie Wichtiges passiert, und zwar eins der am häufigsten verwendeten und nützlichsten Entwurfsmuster überhaupt: das Observer-Muster. In diesem Kapitel sehen wir uns alle möglichen interessanten Eigenschaften dieses Musters an, wie Eins-zu-viele-Beziehungen und lose Kopplungen. Mit dem Observer-Muster im Gepäck sind Sie der Star jeder Muster-Party!

Die Wetterstation im Überblick

Willkommen zum Observer-Muster

Die Observer-Muster-Definition

Die Macht der losen Kopplung

Die Wetterstation entwerfen

Die Wetterstation implementieren

Die Wetterstation hochfahren

Das Observer-Muster in freier Wildbahn

Die lebensverändernde Applikation programmieren

Inzwischen bei Weather-O-Rama

Probefahrt für den neuen Code

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Die Entwurfsprinzipien-Challenge

Das Decorator-Muster

3Objekte dekorieren

Nennen wir dieses Kapitel einfach »Vererbst du noch, oder designst du schon?«. Hier werfen wir einen weiteren Blick auf das typische Überstrapazieren von Vererbung. Sie werden lernen, wie Sie Ihre Klassen zur Laufzeit mit einer Form der Objektkomposition dekorieren können. Warum? Sobald Sie die Dekoration beherrschen, können Sie Ihren Objekten (oder denen anderer Leute) neue Verantwortung geben, ohne hierfür den Code der zugrunde liegenden Klassen ändernzu müssen.

Willkommen bei Starbuzz Coffee

Das Offen/Geschlossen-Prinzip

Wir stellen vor: das Decorator-Muster

Eine Getränkebestellung mit Dekoratoren aufbauen

Die Definition des Decorator-Musters

Unsere Getränke dekorieren

Den Starbuzz-Code schreiben

Getränke programmieren

Zutaten programmieren

Den Kaffee servieren

Dekoratoren in freier Wildbahn: Java I/O

Die java.io-Klassen dekorieren

Einen eigenen Java-I/O-Dekorator schreiben

Unseren neuen Java-I/O-Dekorator testen

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Das Factory-Muster

4In der OO-Bäckerei …

Machen Sie sich bereit, ein paar lose gekoppelte OO-Entwürfe zu backen. Zur Erstellung von Objekten gehört mehr, als einfach den new-Operator einzusetzen. Sie werden lernen, dass Instanziierung nicht in der Öffentlichkeit durchgeführt werden sollte und oft zu Kopplungsproblemen führen kann. Und das wollen wir nun wirklich nicht, oder? Finden Sie heraus, wie das Factory-Muster Sie vor peinlichen Abhängigkeiten bewahren können.

Das Veränderliche finden

Die Objekterstellung verkapseln

Eine einfache Pizzafabrik erstellen

Die einfache Fabrik definieren

Ein Framework für die Pizzeria

Den Subklassen die Entscheidung überlassen

Eine Fabrikmethode deklarieren

Jetzt ist es endlich Zeit, das Factory Method-Muster kennenzulernen

Ein paralleler Blick auf Hersteller und Produkte

Die Definition des Factory Method-Musters

Ein Blick auf Objektabhängigkeiten

Das Prinzip der Umkehrung der Abhängigkeiten

Das Prinzip anwenden

Zutatenfamilien

Die Zutatenfabriken bauen

Die Pizzas überarbeiten …

Unsere Pizzerien überarbeiten

Was haben wir getan?

Die Definition des Abstract Factory-Musters

Factory Method und Abstract Factory im Vergleich

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Das Singleton-Muster

5Einmalige Objekte

Unser nächster Halt ist das Singleton-Muster, unsere Fahrkarte für die Erstellung einmaliger Objekte, von denen es immer nur eine Instanz gibt. Es wird Sie freuen, zu erfahren, dass das Singleton-Muster, bezogen auf sein Klassendiagramm, das einfachste Muster von allen ist. Tatsächlich enthält es nur eine einzige Klasse! Aber machen Sie es sich nicht zu bequem. Trotz des einfachen Klassendesigns müssen wir für seine Implementierung einige tiefgehende objektorientierte Überlegungen anstellen. Also, setzen Sie Ihre Denkmütze auf, und los geht’s.

Die Implementierung des klassischen Singleton-Musters im Detail

Die Schokoladenfabrik

Definition des Singleton-Musters

Brüssel, wir haben ein Problem …

Mit Multithreading umgehen

Können wir das Multithreading verbessern?

Inzwischen in der Schokoladenfabrik …

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Das Command-Muster

6Aufrufe verkapseln

In diesem Kapitel heben wir die Verkapselung auf ein ganz neues Niveau: Wir werden Methodenaufrufe verkapseln. Ja, richtig gehört: Methodenaufrufe. Damit können wir Teile von Berechnungen »einfrieren«, wodurch sich das aufrufende Objekt nicht um die Details der Berechnung kümmern muss. Es nutzt einfach die eingefrorene Methode für die Erfüllung seiner Aufgabe. Mit diesen verkapselten Methodenaufrufen sind aber noch ganz andere schlaue Dinge möglich. Wir können sie beispielsweise zur Protokollierung nutzen oder sie wiederverwenden, um eine »Rückgängig«-Funktionalität zu implementieren.

Ein Blick auf die Drittherstellerklassen

Inzwischen im Bistro …

Vom Bistro zum Command-Muster

Unser erstes Command-Objekt

Das Command-Objekt verwenden

Befehle den Plätzen zuweisen

Die Fernsteuerung implementieren

Die Befehle implementieren

Die Fernsteuerung auf Herz und Nieren testen

Zeit für die Dokumentation …

Was machen wir hier?

Zeit, den Rückgängig-Knopf auf seine Qualität zu testen!

Zustände für die Implementierung der »Rückgängig«-Funktion verwenden

Die Deckenventilator-Befehle mit einer »Rückgängig«-Funktion versehen

Jede Fernsteuerung braucht einen Partymodus!

Einen Makro-Befehl benutzen

Viele Verwendungsmöglichkeiten für das Command-Muster: Warteschlangen für Befehle

Weitere Anwendungen des Command-Musters: Aufträge protokollieren

Das Command-Muster in der wahren Welt

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Die Adapter- und Facade-Muster

7Anpassungsfähigkeit beweisen

In diesem Kapitel versuchen wir so unmögliche Dinge wie die Quadratur des Kreises. Klingt ausgeschlossen? Aber nicht mit Entwurfsmustern. Erinnern Sie sich noch an das Decorator-Muster? Wir haben Objekte verpackt, um sie mit Verantwortlichkeiten zu versehen. Diesmal verpacken wir Objekte, damit ihre Schnittstellen wie etwas aussehen, das sie nicht sind. So können wir Designs, die bestimmte Schnittstellen erwarten, an Klassen anpassen, die eine andere Schnittstelle implementieren. Und das ist noch nicht alles. Wenn wir schon dabei sind, sehen wir uns gleich noch ein anderes Muster an, das Objekte verpackt, um ihre Schnittstelle zu vereinfachen.

Überall Adapter

Objektorientierte Adapter

Probelauf für den Adapter

Das Adapter-Muster erklärt

Die Definition des Adapter-Musters

Objekt- und Klassen-Adapter

Adapter im echten Leben

Einen Enumerator an einen Iterator anpassen

Unser eigenes Heimkino

Einen Film ansehen (auf die harte Tour)

Licht, Kamera, Facade!

Die Heimkino-Facade konstruieren

Die vereinfachte Schnittstelle implementieren

Einen Film anschauen (auf die sanfte Tour)

Die Definition des Facade-Musters

Das Prinzip der Verschwiegenheit

Wie man KEINE Freunde gewinnt und KEINE Objekte beeinflusst

Das Facade-Muster und das Prinzip der Verschwiegenheit

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Das Template Method-Muster

8Algorithmen verkapseln

Wir sind auf dem Verkapselungstrip. Was haben wir schon alles verkapselt? Objekterstellung, Methodenaufrufe, komplexe Schnittstellen, Enten, Pizzas – was kommt wohl als Nächstes? In diesem Kapitel gehen wir der Verkapselung von Algorithmenteilen auf den Grund, damit Subklassen sich bei Bedarf jederzeit direkt in eine Berechnung einklinken können. Außerdem lernen wir ein Entwurfsprinzip kennen, das von Hollywood inspiriert ist. Na dann mal los …

Zeit für mehr Koffein

Ein paar Kaffee- und Tee-Klassen zusammenrühren (in Java)

Kaffee und Tee abstrahieren

Das Design verbessern

prepareRecipe() abstrahieren

Was haben wir getan?

Willkommen beim Template Method-Muster

Was hat uns das Template Method-Muster gebracht?

Die Definition des Template Method-Musters

Eingehängt in die Template Method …

Den Hook verwenden

Das Hollywood-Prinzip und das Template Method-Muster

Template-Methoden in freier Wildbahn

Mit dem Template Method-Muster sortieren

Was ist compareTo()?

Enten mit Enten vergleichen

Ein paar Enten sortieren

Das Making-of der Entensortiermaschine

Swinging mit Frames

Eigene Listen mit AbstractList

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Die Iterator- und Composite-Muster

9Erfolgreiche Collections

Es gibt viele Möglichkeiten, Objekte in einer Collection zu speichern. Zum Beispiel in einem Array, einem Stack, einer Liste oder einer HashMap – Sie haben die Wahl. Dabei hat jede Form ihre Vor- und Nachteile. Irgendwann werden Ihre Clients allerdings über diese Objekte iterieren wollen. Und wollen Sie ihnen dann Ihre Implementierung offenbaren? Hoffentlich nicht! Das wäre einfach nicht professionell. Aber keine Sorge. Ihre Karriere ist nicht gefährdet. In diesem Kapitel werden Sie sehen, wie Ihre Clients über Ihre Objekte iterieren können, ohne zu wissen, wie sie gespeichert sind. Außerdem lernen Sie, wie man Super Collections von Objekten erstellt, die mit einem einzigen Satz einige eindrucksvolle Datenstrukturen überspringen können. Und als wäre das noch nicht genug, werden Sie auch noch das eine oder andere über Objektverantwortlichkeit lernen.

Große Neuigkeiten: Das Restaurant und das Pfannkuchenhaus von Objectville fusionieren

Sehen wir uns die Gerichte an

Die Spezifikation implementieren: unser erster Versuch

Können wir die Iteration verkapseln?

Willkommen zum Iterator-Muster

DinerMenu mit einem Iterator versehen

Die Restaurant-Speisekarte mit einem Iterator überarbeiten

Den Kellnerin-Code aufmöbeln

Den Code testen

Unser aktueller Entwurf auf dem Prüfstand …

Aufräumen mit java.util.Iterator

Die Definition des Iterator-Musters

Die Struktur des Iterator-Musters

Das Prinzip der einzelnen Verantwortlichkeit

Willkommen zu Javas Iterable-Interface

Javas erweiterte for-Schleife

Ein Blick auf die Speisekarte des Cafés

Iteratoren und Collections

Die Definition des Composite-Musters

Speisekarten mit dem Composite-Muster entwerfen

MenuComponent implementieren

Das Gericht (MenuItem) implementieren

Die Komposita-Speisekarte implementieren

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Das State-Muster

10Der (Zu-)Stand der Dinge

Eine kaum bekannte Tatsache: Die Strategy- und das State-Muster sind Zwillinge, die bei der Geburt getrennt wurden. Vielleicht denken Sie, dass beide ein ähnliches Leben führen. In Wirklichkeit hat Strategy jedoch ein unglaublich erfolgreiches Unternehmen rund um austauschbare Algorithmen aufgebaut, während State den vermutlich edleren Weg gewählt hat. Es hilft anderen Objekten, ihr Verhalten zu kontrollieren, indem es ihren inneren Zustand verändert. So unterschiedlich die Wege der beiden auch scheinen – hinter den Kulissen ist ihr Design fast identisch. Wie das sein kann und worum es beim State-Muster wirklich geht, werden wir herausfinden. Am Ende des Kapitels sehen wir uns dann an, welche Beziehung beide Muster tatsächlich zueinander haben.

Ein echter Java-Plombenzieher

Kurze Einführung in Zustandsautomaten

Den Code schreiben

Interner Testlauf

Sie haben es geahnt – ein Änderungswunsch!

ZUSTÄNDE wie bei Hempels unterm Sofa …

Der neue Entwurf

Das Interface State und die Klassen definieren

Umbau des Kaugummiautomaten

Ein Blick auf die komplette Klasse GumballMachine …

Weitere Zustände implementieren

Die Definition des State-Musters

Wir müssen uns wieder dem 1-von-10-Kaugummispiel widmen

Das Spiel fertigstellen

Demo für den CEO von Mighty Gumball, Inc.

Stimmt alles?

Das haben wir fast vergessen!

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Das Proxy-Muster

11Objektzugriff kontrollieren

Haben Sie schon einmal »guter Bulle, böser Bulle« gespielt? Sie sind der gute Polizist und stellen alle Ihre Dienste auf eine nette und freundliche Weise bereit. Wenn Sie aber nicht wollen, dass jeder ungefragt Ihre Dienste nutzt, übernimmt der böse Polizist die Zugangskontrolle für Sie. Denn genau das tun Proxies (»Stellvertreter«): Sie kontrollieren und verwalten den Zugriff. Wie Sie sehen werden, gibt es viele Möglichkeiten, Proxies als Vertreter für andere Objekte zu nutzen. Proxies sind dafür bekannt, dass sie für die von ihnen vertretenen Objekte komplette Methodenaufrufe über das Internet abwickeln. Außerdem nehmen sie bekanntermaßen den Platz einiger ziemlich fauler Objekte ein.

Den Überwachungscode schreiben

Den Überwachungscode testen

Einführung in entfernte Methodenaufrufe

Den Kaugummiautomaten (GumballMachine) als entfernten Dienst einrichten

Bei der RMI-Registry anmelden …

Die Definition des Proxy-Musters

Bereitmachen für den virtuellen Proxy

Den virtuellen Proxy für die Albencover entwerfen

Den Bild-Proxy schreiben

Partnervermittlung für Geeks in Objectville

Die Person implementieren

Fünf-Minuten-Drama: Subjekte schützen

Das große Ganze: Einen dynamischen Proxy für Person erstellen

Der Proxy-Zoo

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Der Code für den Albumcover-Viewer

Zusammengesetzte Muster

12Muster von Mustern

Wer hätte gedacht, dass Muster auch zusammenarbeiten können? Sie haben bereits die erbitterten Kamingespräche miterlebt (und dabei haben wir Ihnen die Seiten mit dem »Pattern Death Match« noch gar nicht gezeigt, die wir auf Druck des Verlegers wieder entfernen mussten). Wer hätte gedacht, dass Muster eigentlich sogar recht gut miteinander auskommen können? Ob Sie’s glauben oder nicht – einige der mächtigsten OO-Entwürfe verwenden Kombinationen mehrerer Muster. Machen Sie sich bereit für die nächste Stufe Ihrer Entwurfsmuster-Fähigkeiten: zusammengesetzte Muster (»Compound-Muster«)

Mustergültige Zusammenarbeit

Ein Wiedersehen mit den Enten

Was haben wir getan?

Ein Blick aus der VogelEntenperspektive: das Klassendiagramm

Der König der zusammengesetzten Muster

Willkommen zu Model-View-Controller

Genauer hingesehen …

MVC als eine Reihe von Mustern verstehen

MVC, um den Beat zu steuern

Erstellung der Einzelteile

Ein Blick auf die konkrete Klasse BeatModel

Der View

Den View implementieren

Und damit zum Controller

Die Einzelteile zusammensetzen …

Strategy erforschen

Das Model adaptieren

Noch ein Probelauf …

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Schöner leben mit Mustern

13Muster in der wahren Welt

Und damit sind Sie bereit für eine strahlende neue Welt voller Entwurfsmuster. Aber bevor Sie all die neuen Chancen nutzen, müssen wir uns noch um ein paar Details kümmern, die Ihnen draußen in der wahren Welt begegnen können, wo die Dinge etwas komplexer sind als hier in Objectville. Auf den folgenden Seiten haben wir für Sie einen kleinen Reiseführer (oder Leitfaden) vorbereitet, der Sie beim Übergang begleiten wird …

Definition von Entwurfsmustern

Ein genauerer Blick auf die Entwurfsmusterdefinition

Möge die Macht mit Ihnen sein

Sie wollen also eigene Entwurfsmuster schreiben

Entwurfsmuster ordnen

In Mustern denken

Denk-Muster

Vergessen Sie nicht die Macht des gemeinsamen Vokabulars

Spritztour durch Objectville mit der Gang of Four

Ihre Reise hat gerade erst begonnen!

Der Muster-Zoo

Mit Anti-Mustern das Böse auslöschen

Werkzeuge für Ihren Entwurfs-Werkzeugkasten

Abschied von Objectville …

14Anhang: Übrig gebliebene Muster

Nicht jeder kann der Beliebteste sein. Seit der Erstveröffentlichung von Design Patterns: Elements of Reusable Object-Oriented Software hat sich viel verändert. Entwickler haben diese Muster tausendfach verwendet. Die in diesem Anhang vorgestellten Muster sind Vollmitglieder der offiziellen GoF-Musterfamilie, werden aber nicht so oft genutzt wie die bisher gezeigten. Trotzdem sind sie auf ihre eigene Art großartig, und wenn die Situation es erfordert, können Sie sie einsetzen, ohne sich dafür zu schämen. In diesem Anhang wollen wir Ihnen einen Überblick darüber geben, worum es bei diesen Mustern geht.

Bridge

Builder

Chain of Responsibility

Flyweight

Interpreter

Mediator

Memento

Prototype

Visitor

iIndex

Wie man dieses Buch benutzt

Einführung

In diesem Abschnitt beantworten wir die brennende Frage: »Warum STEHT so was in einem Buch über Entwurfsmuster?«

Für wen ist dieses Buch?

Wenn Sie alle diese Fragen mit »Ja« beantworten können …

Möchten Sie Entwurfsmuster

lernen, verstehen, behalten und

anwenden,

einschließlich der OO-Entwurfsprinzipien, auf denen Entwurfsmuster basieren?

Ziehen Sie eine anregende Unterhaltung beim Abend-essen einer trockenen, langweiligen Vorlesung vor?

… ist dieses Buch etwas für Sie.

Wer sollte eher Abstand von diesem Buch nehmen?

Wenn Sie eine dieser Fragen mit »Ja« beantworten müssen …

Ist die

objektorientierte Programmierung

komplettes Neuland für Sie?

Sind Sie ein Top-OO-Entwickler, der ein

Buch zum

Nachschlagen

sucht?

Sind Sie ein Softwarearchitekt auf der Suche nach

Enterprise-

Entwurfsmustern?

Haben Sie

Angst, etwas Neues auszuprobieren?

Ist Ihnen eine Wurzelkanalbehandlung lieber, als Streifen kombiniert mit Karos zu tragen? Glauben Sie, dass ein Technikfachbuch, in dem Java-Komponenten vermenschlicht werden, nicht seriös sein kann?

… ist dieses Buch nicht das richtige für Sie.

Wir wissen, was Sie gerade denken

»Kann das wirklich ein seriöses Programmierlehrbuch sein?«

»Was sollen all die Abbildungen?«

»Kann ich das auf diese Weise wirklich lernen?«

Und wir wissen, was Ihr Gehirn gerade denkt.

Ihr Gehirn lechzt nach Neuem. Es ist ständig dabei, Ihre Umgebung abzusuchen, und es wartet auf etwas Ungewöhnliches. So ist es nun einmal gebaut, und es hilft Ihnen zu überleben.

Also, was macht Ihr Gehirn mit all den gewöhnlichen, normalen Routinesachen, denen Sie begegnen? Es tut alles in seiner Macht Stehende, damit es dadurch nicht bei seiner eigentlichen Arbeit gestört wird: Dinge zu erfassen, die wirklich wichtig sind. Es gibt sich nicht damit ab, Langweiliges zu speichern, sondern lässt dieses gar nicht erst durch den »Dies-ist-offensichtlich-nicht-wichtig«-Filter.

Woher weiß Ihr Gehirn denn, was wichtig ist? Nehmen Sie an, Sie machen einen Tagesausflug und ein Tiger springt vor Ihnen aus dem Gebüsch: Was passiert dabei in Ihrem Kopf und Ihrem Körper?

Neuronen feuern. Gefühle werden angekurbelt. Chemische Substanzen durchfluten Sie.

Und so weiß Ihr Gehirn:

Dies muss wichtig sein! Vergiss es nicht!

Aber nun stellen Sie sich vor, Sie sind zu Hause oder in einer Bibliothek. In einer sicheren, warmen, tigerfreien Zone. Sie lernen. Bereiten sich auf eine Prüfung vor. Oder Sie versuchen, sich in irgendein schwieriges Thema einzuarbeiten, von dem Ihr Chef glaubt, Sie bräuchten dafür eine Woche oder höchstens zehn Tage.

Da ist nur ein Problem: Ihr Gehirn versucht, Ihnen einen großen Gefallen zu tun. Es versucht, dafür zu sorgen, dass diese offensichtlich unwichtigen Inhalte nicht knappe Ressourcen verstopfen. Ressourcen, die besser dafür verwendet würden, die wirklich wichtigen Dinge zu speichern. Wie Tiger. Wie die Gefahren des Feuers. Wie die Notwendigkeit, schnell das Browserfenster mit dem YouTube-Video zu einer Alien-Entführung zu verbergen, wenn Ihr Chef die Nase ins Büro steckt.

Und es gibt keine einfache Möglichkeit, Ihrem Gehirn zu sagen: »Hey, Gehirn, vielen Dank, aber egal, wie langweilig dieses Buch auch ist und wie klein der Ausschlag auf meiner emotionalen Richterskala gerade ist, ich will wirklich, dass du diesen Kram behältst.«

Wir stellen uns unsere Leser:innen als aktiv Lernende vor.

Also, was ist nötig, damit Sie etwas lernen? Erst einmal müssen Sie es aufnehmen und dann dafür sorgen, dass Sie es nicht wieder vergessen. Es geht nicht darum, Fakten in Ihren Kopf zu schieben. Nach den neuesten Forschungsergebnissen der Kognitionswissenschaft, der Neurobiologie und der Lernpsychologie gehört zum Lernen viel mehr als nur Text auf einer Seite. Wir wissen, was Ihr Gehirn anmacht.

Einige der Lernprinzipien dieser Buchreihe:

Bilder einsetzen. An Bilder kann man sich viel besser erinnern als an Worte allein und lernt so viel effektiver (bis zu 89 % Verbesserung bei Abrufbarkeitsund Lerntransferstudien). Außerdem werden die Dinge dadurch verständlicher. Text in oder neben die Grafiken setzen, auf die sie sich beziehen, anstatt darunter oder auf eine andere Seite. Die Leserinnen und Leser werden auf den Bildinhalt bezogene Probleme dann mit doppelt so hoher Wahrscheinlichkeit lösen können.

Verwenden Sie einen gesprächsorientierten Stil mit persönlicher Ansprache. Nach neueren Untersuchungen haben Studierende nach dem Lernen bei Tests um bis zu 40 % besser abgeschnitten, wenn der Inhalt Leser:innen direkt in der ersten Person und im lockeren Stil angesprochen hat statt in einem formalen Ton. Halten Sie keinen Vortrag, sondern erzählen Sie Geschichten. Benutzen Sie eine zwanglose Sprache. Nehmen Sie sich selbst nicht zu ernst. Würden Sie einer anregenden Unterhaltung beim Abendessen mehr Aufmerksamkeit schenken oder einem Vortrag?

Bringen Sie die Lernenden dazu, intensiver nachzudenken. Mit anderen Worten: Falls Sie nicht aktiv Ihre Neuronen strapazieren, passiert in Ihrem Gehirn nicht viel. Ein Leser oder eine Leserin muss motiviert, begeistert und neugierig sein und angeregt werden, Probleme zu lösen, Schlüsse zu ziehen und sich neues Wissen anzueignen. Und dafür brauchen Sie Herausforderungen, Übungen, zum Nachdenken anregende Fragen und Tätigkeiten, die beide Seiten des Gehirns und mehrere Sinne einbeziehen.

Ziehen Sie die Aufmerksamkeit der Lernenden auf sich – und behalten Sie sie. Wir alle haben schon Erfahrungen dieser Art gemacht: »Ich will das wirklich lernen, aber ich kann einfach nicht über Seite 1 hinaus wach bleiben.« Ihr Gehirn passt auf, wenn Dinge ungewöhnlich, interessant, merkwürdig, auffällig, unerwartet sind. Ein neues, schwieriges, technisches Thema zu lernen, muss nicht langweilig sein. Wenn es das nicht ist, lernt Ihr Gehirn viel schneller.

Sprechen Sie Gefühle an. Wir wissen, dass Ihre Fähigkeit, sich an etwas zu erinnern, wesentlich von dessen emotionalem Gehalt abhängt. Sie erinnern sich an das, was Sie bewegt. Sie erinnern sich, wenn Sie etwas fühlen. Nein, wir erzählen keine herzzerreißenden Geschichten über einen Jungen und seinen Hund. Was wir erzählen, ruft Überraschungs-, Neugier-, Spaß- und Was-soll-das?-Emotionen hervor und dieses Hochgefühl, das Sie beim Lösen eines Puzzles empfinden oder wenn Sie etwas lernen, das alle anderen schwierig finden. Oder wenn Sie merken, dass Sie etwas können, das dieser »Ich-binein-besserer-Techniker-als-du«-Typ aus der Technikabteilung nicht kann.

Metakognition: Nachdenken übers Denken

Wenn Sie wirklich lernen möchten, und zwar schneller und nachhaltiger, dann schenken Sie Ihrer Aufmerksamkeit Aufmerksamkeit. Denken Sie darüber nach, wie Sie denken. Lernen Sie, wie Sie lernen.

Die meisten von uns haben in ihrer Jugend keine Kurse in Metakognition oder Lerntheorie gehabt. Es wurde von uns erwartet, dass wir lernen, aber nur selten wurde uns auch beigebracht, wie man lernt.

Wir nehmen aber an, dass Sie wirklich etwas über Entwurfsmuster lernen möchten, wenn Sie dieses Buch in den Händen halten. Und wahrscheinlich möchten Sie nicht viel Zeit aufwenden. Und Sie wollen sich an das erinnern, was Sie lesen, und es anwenden können. Und deshalb müssen Sie es verstehen. Wenn Sie so viel wie möglich von diesem Buch profitieren wollen oder von irgendeinem anderen Buch oder einer anderen Lernerfahrung, übernehmen Sie Verantwortung für Ihr Gehirn. Ihr Gehirn im Zusammenhang mit diesem Lernstoff.

Der Trick besteht darin, Ihr Gehirn dazu zu bringen, neuen Lernstoff als etwas wirklich Wichtiges anzusehen. Als entscheidend für Ihr Wohlbefinden. So wichtig wie einen Tiger. Andernfalls stecken Sie in einem dauerhaften Kampf, in dem Ihr Gehirn sein Bestes gibt, um die neuen Inhalte davon abzuhalten, hängen zu bleiben.

Wie bringen Sie also Ihr Gehirn dazu, Entwurfsmuster für so wichtig zu halten wie einen Tiger?

Da gibt es den langsamen, ermüdenden Weg oder den schnelleren, effektiveren Weg. Der langsame Weg geht über bloße Wiederholung. Natürlich ist Ihnen klar, dass Sie lernen und sich sogar an die langweiligsten Themen erinnern können, wenn Sie sich dieselbe Sache immer wieder einhämmern. Wenn Sie nur oft genug wiederholen, sagt Ihr Gehirn: »Er hat zwar nicht das Gefühl, dass das wichtig ist, aber er sieht sich dieselbe Sache immer und immer wieder an – dann muss sie wohl wichtig sein.«

Der schnellere Weg besteht darin, alles zu tun, was die Gehirnaktivität erhöht, vor allem verschiedene Arten von Gehirnaktivität. Eine wichtige Rolle dabei spielen die auf der vorhergehenden Seite erwähnten Dinge – alles Dinge, die nachweislich dabei helfen, dass Ihr Gehirn für Sie arbeitet. So hat sich z. B. in Untersuchungen gezeigt: Wenn Wörter in den Abbildungen stehen, die sie beschreiben (und nicht irgendwo anders auf der Seite, z. B. in einer Bildunterschrift oder im Text), versucht Ihr Gehirn, herauszufinden, wie die Wörter und das Bild zusammenhängen, und dadurch feuern mehr Neuronen. Und je mehr Neuronen feuern, umso größer ist die Chance, dass Ihr Gehirn mitbekommt: Bei dieser Sache lohnt es sich, aufzupassen, und vielleicht auch, sich daran zu erinnern.

Ein lockerer Sprachstil hilft, denn Menschen tendieren zu höherer Aufmerksamkeit, wenn ihnen bewusst ist, dass sie ein Gespräch führen – man erwartet dann ja von ihnen, dass sie dem Gespräch folgen und sich beteiligen. Das Erstaunliche daran ist: Es ist Ihrem Gehirn ziemlich egal, dass die »Unterhaltung« zwischen Ihnen und einem Buch stattfindet! Wenn der Schreibstil dagegen formal und trocken ist, hat Ihr Gehirn den gleichen Eindruck wie bei einem Vortrag, bei dem in einem Raum passive Zuhörer sitzen. Nicht nötig, wach zu bleiben.

Aber Abbildungen und ein lockerer Sprachstil sind erst der Anfang.

Das haben WIR getan:

Wir haben Bilder verwendet, weil Ihr Gehirn auf visuelle Eindrücke eingestellt ist, nicht auf Text. Soweit es Ihr Gehirn betrifft, sagt ein Bild wirklich mehr als 1.024 Worte. Und dort, wo Text und Abbildungen zusammenwirken, haben wir den Text in die Bilder eingebettet, denn Ihr Gehirn arbeitet besser, wenn der Text innerhalb der Sache steht, auf die er sich bezieht, und nicht in einer Bildunterschrift oder irgendwo vergraben im Text.

Wir haben Redundanz eingesetzt, d. h. dasselbe auf unterschiedliche Art und mit verschiedenen Medientypen ausgedrückt, damit Sie es über mehrere Sinne aufnehmen. Das erhöht die Chance, dass die Inhalte an mehr als nur einer Stelle in Ihrem Gehirn verankert werden.

Wir haben Konzepte und Bilder in unerwarteter Weise eingesetzt, weil Ihr Gehirn auf Neuigkeiten programmiert ist. Und wir haben Bilder und Ideen mit zumindest etwasemotionalemCharakter verwendet, weil Ihr Gehirn darauf eingestellt ist, auf die Biochemie von Gefühlen zu achten. An alles, was ein Gefühl in Ihnen auslöst, können Sie sich mit höherer Wahrscheinlichkeit erinnern, selbst wenn dieses Gefühl nicht mehr ist als ein bisschen Belustigung, Überraschung oder Interesse.

Die Meisterin der Muster

Wir haben einen umgangssprachlichen Stil mit direkter Anrede benutzt, denn Ihr Gehirn ist von Natur aus aufmerksamer, wenn es Sie in einer Unterhaltung wähnt, als wenn es davon ausgeht, dass Sie passiv einer Präsentation zuhören – sogar dann, wenn Sie lesen.

Wir haben mehr als 100 Aktivitäten für Sie vorgesehen, denn Ihr Gehirn lernt und behält von Natur aus besser, wenn Sie Dinge tun, als wenn Sie nur darüber lesen. Und wir haben die Übungen zwar anspruchsvoll, aber doch lösbar gemacht, denn so ist es den meisten Lesern am liebsten.

Punkt für Punkt

Wir haben mehrere unterschiedliche Lernstile eingesetzt, denn vielleicht bevorzugen Sie ein Schritt-für-Schritt-Vorgehen, während ein anderer erst einmal den groben Zusammenhang verstehen und ein Dritter einfach nur ein Codebeispiel sehen möchte. Aber ganz abgesehen von den jeweiligen Lernvorlieben profitiert jeder davon, wenn er die gleichen Inhalte in unterschiedlicher Form präsentiert bekommt.

Wir liefern Inhalte für beide Seiten Ihres Gehirns, denn je mehr Sie von Ihrem Gehirn einsetzen, umso wahrscheinlicher werden Sie lernen und behalten, und umso länger bleiben Sie konzentriert. Wenn Sie mit einer Seite des Gehirns arbeiten, bedeutet das häufig, dass sich die andere Seite des Gehirns ausruhen kann; so können Sie über einen längeren Zeitraum produktiver lernen.

Und wir haben Geschichten und Übungen aufgenommen, die mehr als einen Blickwinkel repräsentieren, denn Ihr Gehirn lernt von Natur aus intensiver, wenn es gezwungen ist, selbst zu analysieren und zu beurteilen.

Wir haben Herausforderungen eingefügt: in Form von Übungen und indem wir Fragen stellen, auf die es nicht immer eine eindeutige Antwort gibt, denn Ihr Gehirn ist darauf eingestellt, zu lernen und sich zu erinnern, wenn es an etwas arbeiten muss. Überlegen Sie: Ihren Körper bekommen Sie ja auch nicht in Form, wenn Sie die Menschen auf dem Sportplatz nur beobachten. Aber wir haben unser Bestes getan, um dafür zu sorgen, dass Sie – wenn Sie schon hart arbeiten – an den richtigenDingen arbeiten. Dass Sie nicht einen einzigen Dendriten darauf verschwenden, ein schwer verständliches Beispiel zu verarbeiten oder einen schwierigen, mit Fachbegriffen gespickten oder übermäßig gedrängten Text zu analysieren.

Wir haben Menschen eingesetzt. In Geschichten, Beispielen, Bildern usw. – denn Sie sind ein Mensch. Und Ihr Gehirn schenkt Menschen mehr Aufmerksamkeit als Dingen.

Und das können SIE tun, um sich Ihr Gehirn untertan zu machen

So, wir haben unseren Teil der Arbeit geleistet. Der Rest liegt bei Ihnen. Diese Tipps sind ein Anfang; hören Sie auf Ihr Gehirn und finden Sie heraus, was bei Ihnen funktioniert und was nicht. Probieren Sie neue Wege aus.

Schneiden Sie dies aus und heften Sie es an Ihren Kühlschrank.

Immer langsam. Je mehr Sie verstehen, umso weniger müssen Sie auswendig lernen.

Lesen Sie nicht nur. Halten Sie inne und denken Sie nach. Wenn das Buch Sie etwas fragt, springen Sie nicht einfach zur Antwort. Stellen Sie sich vor, dass Sie das wirklich jemand fragt. Je gründlicher Sie Ihr Gehirn zum Nachdenken zwingen, umso größer ist die Chance, dass Sie lernen und behalten.

Bearbeiten Sie die Übungen. Machen Sie sich selbst Notizen.

Wir haben sie entworfen, aber wenn wir sie auch für Sie lösen würden, wäre dass, als würde ein anderer Ihr Training für Sie absolvieren. Und sehen Sie sich die Übungen nicht einfach nur an.Benutzen Sie einen Bleistift. Es deutet vieles darauf hin, dass körperliche Aktivität beim Lernen den Lernerfolg erhöhen kann.

Lesen Sie die Abschnitte »Es gibt keine Dummen Fragen«.

Und zwar alle. Das sind keine Zusatzanmerkungen – sie gehören zum Kerninhalt! Überspringen Sie sie nicht.

Lesen Sie dies als Letztes vor dem Schlafengehen. Oder lesen Sie danach zumindest nichts Anspruchsvolles mehr.

Ein Teil des Lernprozesses (vor allem die Übertragung in das Langzeitgedächtnis) findet erst statt, nachdem Sie das Buch zur Seite gelegt haben. Ihr Gehirn braucht Zeit für sich, um weitere Verarbeitung zu leisten. Wenn Sie in dieser Zeit etwas Neues aufnehmen, geht ein Teil dessen, was Sie gerade gelernt haben, verloren.

Trinken Sie Wasser. Viel.

Ihr Gehirn arbeitet am besten in einem schönen Flüssigkeitsbad. Austrocknung (zu der es schon kommen kann, bevor Sie überhaupt Durst verspüren) beeinträchtigt die kognitive Funktion.

Reden Sie drüber. Laut.

Sprechen aktiviert einen anderen Teil des Gehirns. Wenn Sie etwas verstehen wollen oder Ihre Chancen verbessern möchten, sich später daran zu erinnern, sagen Sie es laut. Noch besser: Versuchen Sie, es jemand anderem laut zu erklären. Sie lernen dann schneller und haben vielleicht Ideen, auf die Sie beim bloßen Lesen nie gekommen wären.

Hören Sie auf Ihr Gehirn.

Achten Sie darauf, Ihr Gehirn nicht zu überladen. Wenn Sie merken, dass Sie etwas nur noch überfliegen oder dass Sie das gerade erst Gelesene vergessen haben, ist es Zeit für eine Pause. Ab einem bestimmten Punkt lernen Sie nicht mehr schneller, indem Sie mehr hineinzustopfen versuchen; das kann sogar den Lernprozess stören.

Aber bitte mit

Gefühl!

Ihr Gehirn muss wissen, dass es um etwas Wichtiges geht. Lassen Sie sich in die Geschichten hineinziehen. Erfinden Sie eigene Bildunterschriften für die Fotos. Über einen schlechten Scherz zu stöhnen, ist immer noch besser, als gar nichts zu fühlen.

Entwerfen Sie etwas!

Wenden Sie das hier Gelernte auf einen Entwurf an, an dem Sie gerade arbeiten, oder gestalten Sie ein älteres Projekt damit um. Tun Sie irgendetwas, um weitere Erfahrungen zu sammeln, die über die Übungen und Aktivitäten in diesem Buch hinausgehen. Sie brauchen dazu nur einen Bleistift und ein Problem, das es zu lösen gilt … ein Problem, das von einem oder mehreren Entwurfsmustern profitieren würde.

Lies mich

Dies ist ein Lehr- und Lernbuch, kein Nachschlagewerk. Wir haben absichtlich alles weggelassen, das dem Lernen im Weg stehen könnte, egal woran wir gerade im Buch arbeiten. Beim ersten Durchlesen müssen Sie am Anfang beginnen, weil das Buch an einigen Stellen davon ausgeht, dass sie bestimmte Dinge bereits gesehen und gelernt haben.

Wir verwenden einfache Diagramme im UML-Stil.

Auch wenn Sie UML wahrscheinlich schon einmal begegnet sind, wird es in diesem Buch nicht behandelt und ist auch keine Voraussetzung. Keine Sorge, wenn Ihnen UML vollkommen neu ist. Wir geben Ihnen unterwegs die nötigen Hinweise. Das heißt, Sie müssen sich nicht gleichzeitig über Entwurfsmuster und UML den Kopf zerbrechen. Unsere Diagramme sind im »UML-Stil« gehalten. Das heißt, wir versuchen, möglichst nah am echten UML zu bleiben, werden die Regeln hier und da aber auch brechen – meistens aus rein egoistischen und künstlerischen Gründen.

Wir behandeln nicht alle je entwickelten Entwurfsmuster.

Inzwischen gibt es eine Menge Entwurfsmuster: Die ursprünglichen Grundmuster (auch als GoF-Muster – »Gang of Four« – bezeichnet), Enterprise-Java-Muster, architektonische Muster, Gamedesignmuster und viele mehr. Allerdings war es uns wichtig, dass das Buch weniger wiegt als die Person, die es liest. Daher konzentrieren wir uns hier auf die wirklich wichtigen objektorientierten Kernmuster und sorgen dafür, dass Sie wirklich, wahrhaftig und vollständig verstehen, wie und wann sie benutzt werden. Im Anhang dieses Buchs finden Sie einen Überblick über einige andere Muster (die Sie wahrscheinlich deutlich seltener nutzen werden – wenn überhaupt). Auf jeden Fall werden Sie nach der Lektüre von Entwurfsmuster von Kopf bis Fuß in der Lage sein, einen beliebigen Musterkatalog in die Hand zu nehmen und schnell loszulegen.

Die Übungen sind NICHT optional.

Die Übungen und Aktivitäten sind keine Extras, sondern gehören zum Kerninhalt dieses Buchs. Einige Übungen dienen der Erinnerung, andere dem Verständnis, und einige helfen Ihnen, das Gelernte anzuwenden. Überspringen Sie die Übungen nicht. Allein die Kreuzworträtsel sind freiwillig. Allerdings geben sie Ihrem Gehirn Gelegenheit, die Wörter in einem anderen Kontext wahrzunehmen.

Wir benutzen das Wort »Komposition« in der allgemeinen OO-Bedeutung, die flexibler ist als die striktere UML-Form.

Wenn wir sagen, dass »ein Objekt durch Komposition mit einem anderen Objekt zusammengefügt« wurde, meinen wir damit, dass eine HAT-EIN-Beziehung zwischen ihnen besteht. So wurde dieser Begriff traditionell und auch im GoF-Buch verwendet (was das ist, erfahren Sie später). In UML wurde dieser Begriff dann später in verschiedene Kompositionstypen aufgegliedert. Aber auch wenn Sie UML-Experte sind, werden Sie das Buch lesen und den Begriff »Komposition« jeweils leicht in den genaueren Fachbegriff übersetzen können.

Die Redundanz ist wichtig und beabsichtigt.

Ein wesentliches Anliegen eines Von Kopf bis Fuß-Buchs ist: Wir wollen, dass Sie es wirklich kapieren. Und wir wollen, dass Sie sich am Ende des Buchs an das Gelernte erinnern. Beständigkeit und Erinnern ist bei den meisten Referenzbüchern nicht das Ziel, aber in diesem Buch geht es ums Lernen. Deshalb werden Sie einige der hier gezeigten Konzepte mehr als einmal zu Gesicht bekommen.

Die Codebeispiele sind so kurz wie möglich.

Unsere Leserinnen und Leser berichten uns, dass sie es frustrierend finden, sich durch 200 Zeilen Code graben zu müssen, um die beiden Zeilen zu finden, die sie wirklich verstehen müssen. Die meisten Beispiele in diesem Buch werden mit so wenig Kontext wie möglich gezeigt, damit der Teil, den Sie lernen sollen, klar und einfach ist. Sie dürfen nicht erwarten, dass der Code robust oder gar vollständig ist. Die Beispiele in diesem Buch wurden speziell für Lehrzwecke geschrieben und sind nicht immer voll funktionsfähig (obwohl wir versucht haben, das so weit wie möglich sicherzustellen).

In manchen Fällen haben wir nicht alle nötigen Importanweisungen abgedruckt. Wir gehen davon aus, dass Sie als Java-Programmierer wissen, dass ArrayList in java.util zu finden ist. Wenn die Importe nicht Teil der Kern-JSE-API sind, erwähnen wir das. Außerdem haben wir den gesamten Quellcode zum Herunterladen bereitgestellt. Sie finden ihn unter:

http://wickedlysmart.com/head-first-design-patterns

Da wir uns auf den Lernaspekt des Codes konzentrieren wollen, haben wir unsere Klassen auch nicht in Pakete gesteckt (mit anderen Worten, sie liegen alle im Java-Standardverzeichnis). In der realen Welt empfehlen wir das allerdings nicht – wenn Sie sich die Codebeispiele herunterladen, werden Sie feststellen, dass dort alle Klassen in Paketen organisiert sind.

Zu den Kopfnuss-Übungen gibt es keine Lösungen.

Für manche dieser Übungen gibt es keine richtige Lösung, und bei anderen gehört es zum Lernprozess der Kopfnuss-Aktivitäten, dass Sie selbst überlegen, ob und wann Ihre Lösungen richtig sind. Bei einigen Kopfnuss-Übungen finden Sie Hinweise, die Sie in die richtige Richtung lenken.

DasGutachter-Teamderersten Auflage

Jef Cumps

Valentin Crettaz

Barney Marispini

Dirk Schreckmann

Jason Menard

Fachgutachter, zweite Auflage

Julian Setiawan

David Powers

Trisha Gee

Danksagungen

Für die erste Auflage:

An O’Reilly:

Unser besonderer Dank geht an Mike Loukides bei O’Reilly, der alles ins Leben gerufen und geholfen hat, aus dem »Head First«-Konzept eine Buchreihe zu entwickeln (»Head First« heißt die amerikanische Reihe, aus der dieses Buch stammt). Und ein großes Dankeschön auch an die treibende Kraft hinter Head First, Tim O’Reilly. Dank ebenfalls an die kluge Head First-»Serienmutter« Kyle Hart, an »InDesign-König« Ron Bilodeau, an Rockstar Ellie Volckhausen für ihr geniales Titeldesign, an Melanie Yarbrough für das Hüten der Herstellung, an Colleen Gorman für das gnadenlose Sprachkorrektorat und an Bob Pfahler für einen deutlich verbesserten Index. Vielen Dank schließlich an Mike Hendrickson und Meghan Blanchette dafür, dass sie sich für dieses Entwurfsmusterbuch eingesetzt und das Team zusammengestellt haben.

An unsere tapferen Fachgutachter:

Ganz besonders dankbar sind wir unserem Chef-Reviewer Johannes deJong. Du bist unser Held, Johannes. Überaus dankbar sind wir auch für die Beiträge des Co-Managers im Javaranch-Gutachterteam, des verstorbenen Philippe Maquet. Du ganz persönlich hast das Leben Tausender Entwickler bereichert und einen unauslöschlichen Eindruck in ihrem (und in unserem) Leben hinterlassen. Jef Cumps hat ein beängstigendes Talent, Probleme in unseren Rohfassungen der Kapitel zu finden, was für das Buch eine große Rolle gespielt hat. Danke, Jef ! Valentin Crettaz (unser AOP-Fachmann), der schon seit dem allerersten Buch der Reihe dabei ist, hat uns (wie immer) gezeigt, wie sehr wir doch auf sein Fachwissen und seinen Einblick angewiesen sind. Du bist spitze, Valentin (aber leg die Krawatte ab!).

Zwei Neulinge im Head First-Fachgutachterteam, Barney Marispini und Ike Van Atta, haben ganz hervorragende Arbeit für das Buch geleistet – ihr habt uns wirklich entscheidende Rückmeldungen gegeben. Danke, dass ihr zum Team gestoßen seid.

Ausgezeichnete fachliche Hilfe haben wir auch von den Javaranch-Moderatoren und -Gurus Mark Spritzler, Jason Menard, Dirk Schreckmann, Thomas Paul und Margarita Isaeva erhalten. Und wie immer danken wir besonders dem Obercowboy von javaranch.com, Paul Wheaton.

Danke auch an die Teilnehmer der Endrunde im Javaranch-Wettbewerb »Pick the Head First Design Patterns Cover«. Der Gewinner, Si Brewster, hat uns mit seinem Beitrag überzeugt, die Frau auszuwählen, die Sie jetzt auf unserem Einband sehen. In der Endrunde waren außerdem Andrew Esse, Gian Franco Casula, Helen Crosbie, Pho Tek, Helen Thomas, Sateesh Kommineni und Jeff Fisher.

Für die Aktualisierung in 2014 danken wir: George Hoffer, Ted Hill, Todd Bartoszkiewicz, Sylvain Tenier, Scott Davidson, Kevin Ryan, Rich Ward, Mark Francis Jaeger, Mark Masse, Glenn Ray, Bayard Fetler, Paul Higgins, Matt Carpenter, Julia Williams, Matt McCullough und Mary Ann Belarmino.

Unser Dank

Danksagungen

Für die zweite Auflage:

An O’Reilly:

Zuallererst ist da Mary Treseler. Sie ist die Superheldin, ohne die gar nichts läuft. Wir sind ihr auf ewig für alles dankbar, was sie für O’Reilly, Head First und die Autoren tut. Melissa Duffield und Michele Cronin haben viele Wege freigeräumt, die zu dieser zweiten Auflage geführt haben. Ein großes Dankeschön auch an Rachel Monaghan, die unserem Text mit ihrem Sprachkorrektorat zu neuem Glanz verholfen hat. Kristen Brown sorgte dafür, dass dieses Buch online und im Druck gut aussieht. Die Magie von Ellie Volckhausen hat dieser zweiten Auflage zu einem neuen Cover verholfen. Vielen Dank an euch alle!

An unsere Fachgutachter für die zweite Auflage:

Wir danken unseren Fachgutachtern für die zweite Auflage dafür, dass sie diese Aufgabe 15 Jahre später übernommen haben. David Powers ist unser Gutachter der Wahl (ja unser – denken Sie nicht einmal daran, ihn zu bitten, Ihr Buch zu begutachten), weil ihm einfach nichts entgeht. Mit seinen detaillierten Kommentaren, Vorschlägen und Rückmeldungen ging George Heineman weit über das normale Maß hinaus und bekommt dafür den MVP-Award (Most Valuable Player) für diese Auflage. Trisha Gee und Julian Setiawan halfen mit ihren unschätzbar wertvollen Java-Kenntnissen dabei, all die peinlichen und schauderhaften Java-Fehler zu vermeiden. Herzlichen Dank an euch alle!

Ein ganz besonderes Dankeschön

Ein besonderes Dankeschön geht an Erich Gamma, der weit über seine Aufgabe als Gutachter hinausgegangen ist (er hat sogar ein Vorabmanuskript mit in den Urlaub genommen). Erich, dein Interesse an diesem Buch hat uns inspiriert, und dein technisches Gutachten hat es enorm verbessert. Vielen Dank auch an die gesamte Gang of Four für ihre Unterstützung, ihr Interesse und für einen besonderen Auftritt in Objectville. Weiteren Dank schulden wir Ward Cunningham und der Patterns-Community, die das Portland Pattern Repository angelegt haben, das uns beim Schreiben dieses Buchs eine Ressource von unschätzbarem Wert war.

Ein großes Dankeschön an Mike Loukides, Mike Hendrickson und Meghan Blanchette. Mike L. hat uns bei jedem Schritt dieses Wegs begleitet. Mike, deine fundierten Rückmeldungen haben geholfen, diesem Buch eine Form zu geben, und dein Ansporn brachte uns vorwärts. Mike H., danke für deine Beständigkeit über fünf Jahre, in denen du versucht hast, uns zum Schreiben eines Entwurfsmusterbuchs zu bewegen: Wir haben es schließlich geschafft und sind froh, dass wir auf Head First gewartet haben.

Es braucht ein ganzes Dorf, um so ein Fachbuch zu schreiben: Bill Pugh und Ken Arnold halfen mit ihrem Fachwissen zu Singleton. Joshua Marinacci unterstützte uns mit Tipps und Ratschlägen zu Swing. John Brewers »Why a Duck?«-Artikel diente als Inspiration für SimUDuck (zum Glück mag auch er Enten). Dan Friedman inspirierte uns mit dem Beispiel zum Kleinen Singleton. Daniel Steinberg diente als unser »technischer Verbindungsoffizier« und als unser emotionales Unterstützernetzwerk. Danke auch an James Dempsey von Apple für die Erlaubnis, seinen MVC-Song zu benutzen. Und danke an Richard Warburton, der sicherstellte, dass unsere Java-8-Code-Updates für die aktualisierte Version dieses Buchs auf dem neuesten Stand waren.

Zum Schluss ein persönliches Dankeschön an das Javaranch-Gutachterteam für ihre erstklassigen Reviews und die herzliche Unterstützung. In diesem Buch steckt mehr von euch, als ihr denkt.

Das Schreiben eines »Von Kopf bis Fuß«-Buchs ist ein wilder Ritt mit zwei erstaunlichen Tour-Guides: Kathy Sierra und Bert Bates. Wenn man mit Kathy und Bert zusammenarbeitet, schmeißt man alle Konventionen zum Schreiben von Büchern über Bord und betritt eine Welt voller Geschichten, Lerntheorie, Kognitionswissenschaft und Popkultur, in der es grundsätzlich um die Leserinnen und Leser geht.

1 Einführung in Entwurfsmuster

Willkommen bei den Entwurfsmustern

Irgendjemand hat Ihr Problem schon gelöst. In diesem Kapitel lernen Sie, warum (und wie) Sie die Weisheit und die Lehren anderer Entwickler nutzen können, die die gleichen Designprobleme bereits hatten und die Reise überlebt haben. Bevor dieses Kapitel zu Ende ist, kümmern wir uns um die Verwendung und die Vorteile der Entwurfsmuster, sehen uns ein paar grundsätzliche objektorientierte (OO-)Designprinzipien an und gehen mit Ihnen zusammen ein Beispiel für die Funktionsweise von Entwurfsmustern durch. Die beste Möglichkeit, die Muster zu verwenden, ist, sie in Ihr Gehirn zu laden und dann die Stellen in Ihren Designs und bestehenden Programmen zu erkennen, an denen der Einsatz sinnvoll ist. Im Gegensatz zur Codewiederverwendung können Sie mit Entwurfsmustern die Erfahrung anderer Menschen wiederverwenden.

Es begann mit einer einfachen SimUDuck-App

Joe arbeitet für ein Unternehmen, das das extrem erfolgreiche Ententeich-Simulationsspiel SimUDuck herstellt. Das Spiel kann viele Entenarten beim Schwimmen und Quaken zeigen. Die ursprünglichen Entwickler des Systems setzten klassische OO-Techniken ein. Sie erstellten eine Duck-(»Ente«-)Superklasse, von der alle anderen Ententypen erbten.

Im vergangenen Jahr sah sich das Unternehmen einem wachsenden Druck von Mitbewerbern ausgesetzt. Nach einem einwöchigen Brainstorming beim Golfen waren sich die Chefs darüber einig, dass die Zeit reif sei für eine große Innovation. Sie brauchten etwas wirklich Eindrucksvolles, das sie in der folgenden Woche bei der in Maui/Hawaii stattfindenden Aktionärsversammlung vorzeigen konnten.

Aber jetzt sollen die Enten FLIEGEN können

Die Geschäftsleitung hat entschieden, dass fliegende Enten genau das Richtige sind, um die Mitbewerber aus dem Feld zu drängen. Und natürlich hat Joes Manager bestätigt, das sei überhaupt kein Problem. Joe werde in einer Woche schon irgendwas aus dem Hut zaubern. »Schließlich«, sagte Joes Chef, »ist er OO-Programmierer. So schwer kann das ja nicht sein.«

Aber irgendetwas ging furchtbar schief …

Was ist passiert?

Joe hatte übersehen, dass nicht alle Subklassen von Duck fliegen dürfen. Das neue Verhalten, um das Joe die Superklasse Duck erweitert hatte, war nun auch in Subklassen verfügbar, die es eigentlich nicht hätten haben sollen. Plötzlich konnten in SimUDuck auch leblose Objekte fliegen.

Ein lokalisiertes Code-Update hatte nicht lokale Nebenwirkungen (fliegende Gummienten)!

Joe denkt über Vererbung nach …

Spitzen Sie Ihren Bleistift

Welche der folgenden Punkte sind Nachteile beim Einsatz von Vererbung, um das Verhalten der Enten zu implementieren? (Kreuzen Sie alle zutreffenden Punkte an.)

A. Code wird in Subklassen dupliziert.B. Änderungen des Laufzeitverhaltens sind schwierig.C. Wir können Enten nicht das Tanzen beibringen.D. Es ist schwer, alle Verhaltensweisen der Enten genau zu kennen.E. Enten können nicht gleichzeitig fliegen und quaken.F. Änderungen können sich unbeabsichtigt auf andere Enten auswirken.

Wie wäre es mit einem Interface?

Joe begriff, dass Vererbung offenbar nicht die Antwort war. Er hatte nämlich gerade ein Memo erhalten, in dem die Geschäftsleitung mitteilte, dass das Produkt alle sechs Monate aktualisiert werden soll (wie genau, war noch nicht entschieden). Joe wusste, dass sich die Spezifikationen ständig ändern würden und dass er möglicherweise gezwungen wäre, die fly()- und quack()-Methoden für jede einzelne Duck-Subklasse im Programm zu überschreiben … für immer.

Er brauchte also einen besseren Weg, das Fliegen und Quaken nur für bestimmte (aber nicht alle) Enten anzupassen.

Was halten SIE von diesem Design?

Was würden Sie an Joes Stelle tun?

Wir wissen, dass nicht alle Subklassen fliegen oder quaken sollen. Vererbung ist also die falsche Antwort. Wenn die Subklassen das Flyable- bzw. das Quackable-Interface implementieren, lösen wir immerhin einen Teil des Problems (keine fliegenden Gummienten mehr). Gleichzeitig wird die Codewiederverwendbarkeit für dieses Verhalten komplett zerstört, und wir tauschen einen Wartungsalptraum nur durch einen anderen aus. Und natürlich kann es verschiedene Arten von Flugverhalten unter den flugfähigen Enten geben …

An dieser Stelle warten Sie vermutlich auf ein Entwurfsmuster, das auf einem weißen Ross angaloppiert kommt und Rettung bringt. Aber wo bleibt da der Spaß? Nein. Wir finden unsere Lösung auf die altmodische Art – indem wir gute alte OO-Designprinzipien anwenden.

Die einzige Konstante in der Softwareentwicklung

Okay, worauf können Sie sich in der Softwareentwicklung immer verlassen?

Egal woran Sie arbeiten und was oder in welcher Sprache Sie programmieren – was ist die einzig wahre Konstante, die sich niemals ändert?

(Benutzen Sie einen Spiegel, um die Antwort zu lesen)

Ganz gleich, wie gut Ihr Programm entworfen ist: Im Laufe der Zeit muss es wachsen, sich verändern und schließlich sterben.

Spitzen Sie Ihren Bleistift

Viele Dinge können Veränderungen bewirken. Notieren Sie einige Gründe dafür, dass Sie den Code Ihrer Applikation ändern mussten (um Ihnen ein Beispiel zu geben, haben wir ein paar unserer eigenen Gründe schon aufgeschrieben.) Vergleichen Sie Ihre Antworten mit der Lösung am Ende des Kapitels, bevor Sie weitermachen.

Meine Kunden oder Benutzer haben sich für etwas anderes oder neue Funktionalitäten entschieden.

Mein Unternehmen ist zu einem anderen Datenbankanbieter gewechselt. Außerdem haben dessen Daten ein anderes Format. Argh!

Das Problem eingrenzen

Wir wissen also, dass Vererbung hier nicht so gut funktioniert, weil sich das Verhalten der Enten über die Subklassen verändert und nicht alle