Rezensionen

Veröffentlicht auf www.hmrc.de

Den vernünftigen Einsatz von Entwurfsmustern schätze ich sehr – wer bei HMR eine Ausbildung zum Fachinformatiker macht, wird das bestätigen können 😉

Kürzlich ist mir eine Neuerscheinung in die Hände gefallen, die ich Ihnen nicht vorenthalten möchte. In diesem Buch werden Entwurfsmuster inhaltlich ausgewogen, präzise und sehr verständlich beschrieben.

Das Buch richtet sich an Entwickler, die mit der Programmiersprache Java bereits vertraut sind. Es stellt die Entwurfsmuster der „Gang of Four“ vor und zeigt sehr praxisnah, wie sie sich in Entwicklungsprojekten einsetzen lassen. Der Autor stellt hierbei weniger die Theorie in den Vordergrund, sondern geht vor allem von den Sachverhalten aus, die in der Praxis die Verwendung von Entwurfsmustern nahelegen. Er erklärt abstrakte Konzepte anhand einprägsamer Beispiele und orientiert sich dabei an den „Problemen der realen Welt“.

Der Autor besitzt eine gute Hand dafür, für jeden Sachverhalt ein passendes Beispiel zu finden – mal zu 100% aus dem realen Leben gegriffen, mal vollkommen fiktiv, je nachdem, was dem Verständnis gerade zuträglicher ist. Er zeigt Ansätze und Stolperstellen für Implementierungen auf, ohne immer den Anspruch auf Vollständigkeit zu erheben. Der Leser wird vielmehr in die Lage versetzt, sich selbst ein Bild über die verschiedenen Aspekte zu machen und eigene Entscheidungen zu treffen.

Die Beispiele sind so einfach wie möglich und so technisch wie nötig gehalten. Immer da, wo technische Tiefe gebraucht wird, zeigt der Autor seine eigenen weitreichenden Kenntnisse und schreckt auch nicht davor zurück, schon im ersten Kapitel VM-Implementierungen, Classloader oder Threadsicherheit anzusprechen. Die Kenntnis solcher Details ist keine zwingende Voraussetzung für die Lektüre, der Leser wird aber implizit ermuntert, sich damit zu beschäftigen.

Ein besonderes Verdienst dieses Buches liegt darin, dass der Autor den Nutzen der vorgestellten Entwurfsmuster immer wieder kritisch hinterfragt und den Leser dazu anregt, sich seine eigene Meinung zu bilden. Siebler zeigt die verschiedenen Programmier-Taktiken im Spannungsfeld der Anforderungen, denen sich ein Entwickler in realen Projekten stellen muss.

Das Buch ist sehr unterhaltsam geschrieben und flüssig zu lesen. Oft sind die Beispiele mit einem feinen Sinn für subtilen Humor formuliert – etwa, wenn der Autor Sachverhalte der Softwareentwicklung anhand von Analogien aus der realen Welt erläutert oder satirische Seitenhiebe auf gesellschaftliche Entwicklungen austeilt. In Sieblers Text spiegelt sich offenbar ein reicher Erfahrungsschatz aus tatsächlichen Entwicklungsprojekten wieder. Immer wieder geht er in Nebensätzen auf die Widrigkeiten des Programmieralltags ein und karrikiert sie bisweilen so treffend, dass ich bei der Lektüre einige Male herzhaft lachen musste.

Schon die Begrüßungsformel in elbischer Sprache zeigt, wie sehr der Text in der Gedankenwelt eines typischen Programmierers angesiedelt ist. Immer wieder überrascht das Buch durch seinen Abwechslungsreichtum. In bestimmten Kapiteln vermitteln die Beispiele Basis-Know-How, das über die reine Nutzung der Entwurfsmuster hinausgeht, etwa wenn in einem Exkurs Sortieralgorithmen vorgestellt werden. Durch solche Exkurse wirkt das Buch nie zu „schematisch“, obwohl es die einzelnen Entwurfsmuster sehr konsequent und systematisch vorstellt. Die Inhalte sind dennoch nie vorhersehbar, und somit wird die Lektüre nie langweilig.

Zu jedem Entwurfsmuster hat der Autor inhaltlich fundierte Beispielprojekte bereitgestellt, die über den reinen Umfang des Buches weit hinausgehen und deren Quellcode er seinen Lesern zum Download anbietet. Diese Beispiele laden zum Selbststudium ein und stellen eine sehr wertvolle Ergänzung zur Lektüre des Buches dar. Siebler erklärt einleuchtend und umfassend – indes würde es den Rahmen eines solchen Buches sprengen, im Text jedes kleine Detail ausführen zu wollen. Der Autor geht den richtigen Weg und ermutigt den Leser immer wieder dazu, sich selbst in die Beispiele einzuarbeiten. Diese Bereitschaft sollte der Leser auch mitbringen, erst dann erschließt sich ihm das Werk in seiner ganzen Tiefe.

Der Text zielt eindeutig darauf ab, den Leser zum Denken anzuregen. Er stellt diverse Ideen zur Methodik des Programmierens vor, kritisches Abwägen hat den Vorrang vor stumpfem Lernen. Siebler macht aus den Entwurfsmustern keine Ersatzreligion. Sein Buch thematisiert auch berechtigte Kritikpunkte, die in bestimmten Fällen gegen den Einsatz eines Entwurfsmusters sprechen können. Durch seine kontrovers vorgetragenen Argumente lehrt er Entwickler, Entwurfsmuster als mögliche Werkzeuge zu begreifen und auf dieser Basis in Zukunft eigene fundierte Design-Entscheidungen zu treffen. Auch für den erfahrenen Entwickler eignet sich das Buch als Gedächtnisstütze und Nachschlagewerk.

Siebler doziert nicht, er nimmt den Leser mit auf eine spannende Reise in die Welt der Entwurfsmuster – und lässt ihn dort seine eigenen Erfahrungen sammeln. Sehr empfehlenswert.

Jens Hoekstra, 23.10.2014

Veröffentlicht auf Deesaster 
unter der Creative-Commons-Lizenz „CC-BY-SA-4.0“

Wer bei der „Gang of Four“ zuerst an die Daltons denkt, hat sicherlich wenig mit Entwurfsmustern (Englisch: Design Patterns) zu tun. Wenn man aber zur programmierenden Zunft in einer objektorientierten Sprache gehört, sind Entwurfsmuster oft das A und O und sollten von jedem zumindest einmal gehört worden sein. Die Rezension soll zeigen, ob das Buch „Design Patterns mit Java“ dabei helfen kann.

Geschichtliches

Entwurfsmuster reichen (in der Zeitrechnung der Programmierung) schon ziemlich lange zurück. Es handelt sich dabei um Muster, die man zur Lösung immer wiederkehrender Probleme und Fragestellungen nutzen kann. Auch wenn die Gang of Four (kurz GoF), dazu gehören Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides, die Entwurfsmuster nicht erfunden haben, haben sie 1995 mit ihrem Buch „Design Patterns. Elements of Reusable Object-Oriented Software” zumindest sehr zu deren Verbreitung beigetragen.\nIn dem GoF-Buch sind 23 Design-Patterns beschrieben mit Beispielanwendungen in der Programmiersprache C++, die der Autor Florian Siebler in seinem Buch „Design Patterns mit Java“ ebenfalls aufgreift, erklärt und beispielhaft mit Java umsetzt.

Buchaufbau

Das Buch ist, in Anlehnung an die Gang of Four, in 24 Kapitel untergliedert: 23 für Entwurfsmuster und eines für Designprinzipien, darunter auch ein Teil der SOLID-Prinzipien. Die Kapitel bauen dabei so gut wie gar nicht aufeinander auf, sodass man nicht gezwungen ist, das Buch von vorne nach hinten durchzulesen. Man kann sich auch einfach nur mit einem Kapitel beschäftigen, wenn einen ein bestimmtes Entwurfsmuster interessiert.\nIn jedem Kapitel wird das jeweilige Entwurfsmuster vorgestellt und mindestens ein kleines Beispiel dazu gezeigt. In manchen Kapiteln wird dabei auch erst eine naive Implementierung in Java gezeigt und auf deren Vor- und Nachteile hingewiesen. Danach folgt meist eine Verbesserung der Umsetzung oder eine alternative Lösung. Dies ist vor allem in den ersten zwei Kapiteln zum Singleton-Pattern und Observer-Pattern in Bezug auf nebenläufige Verwendung sehr hilfreich.\nZusätzlich zeigt Florian Siebler auch immer eine Verwendung des Entwurfsmusters in einer der Java-Bibliotheken auf, sodass Leser sofort sehen, dass die Muster keine theoretischen Überlegungen sind, sondern auch in der realen Welt zum Einsatz kommen.\nDie Listings und Beispiele sind dabei oft nur gekürzt enthalten. Der Autor verweist dazu immer wieder auf die Webseite zum Buch patternsBuch.de.\nEtwas überraschend ist der Abschluss des Buches, denn es gibt keinen. Nach den 23 Entwurfsmustern kommt der Index und es ist Schluss.

Zielgruppe

Das Buch heißt nicht umsonst „Design Patterns mit Java“, denn Java wird zum Verständnis der Muster bzw. deren Umsetzung vorausgesetzt. Vor allem die Hinweise auf die Verwendung der Entwurfsmuster in den Java-Bibliotheken verstehen oft nur die Java-Entwickler, welche die jeweilige Bibliothek auch schon im Einsatz hatten. Das macht ein Teil des Buches für Nutzer anderer Programmiersprachen leider hinfällig, da man nicht immer folgen kann und diese Abschnitte dann eher überspringt.\nDennoch kann man auch ohne (große) Java-Kenntnisse den Umsetzungen folgen und diese in einer Sprache seiner Wahl nachprogrammieren. Von den online bereitgestellten Beispielen hat man in dem Fall natürlich sehr wenig.\nDie online bereitgestellten Beispiele zeigen aber auch, dass die Zielgruppe am besten über einen Internetanschluss verfügt, wenn man das Buch durcharbeiten möchte. Denn ansonsten fällt es manchmal etwas schwer, nur anhand der Code-Auszüge der Umsetzung zu folgen.

Design Patterns en detail

Florian Siebler geht sehr gut auf die einzelnen Entwurfsmuster ein. Wie oben schon erwähnt zeigt er nicht nur verschiedene Realisierungen mit deren Vor- und Nachteilen auf, sondern geht auch auf Besonderheiten wie Nebenläufigkeit ein – etwas, was bei anderen Design-Patterns-Büchern gerne unterschlagen wird. Die vorgestellten Lösungen sind dabei natürlich Java-abhängig und in anderen Sprachen muss man sich bei Nebenläufigkeit andere Lösungen ausdenken bzw. die vorgestellte Idee zumindest anders umsetzen. Sehr schön ist auch, dass er auf sogenannte Anti-Patterns eingeht, zu denen sehr viele Entwickler beispielsweise das Singleton-Pattern zählen.

Für die Erklärung der Patterns benutzt Siebler mehr Text und wenig Klassen-Diagramme. Als Grund hierfür führt der Autor an, dass die Diagramme der unterschiedlichen Entwurfsmuster oft sehr ähnlich bzw. sogar identisch aussehen. Einem Einsteiger in Entwurfsmuster bringen diese Diagramme daher wenig. So werden sie auch nur gezielt dort eingesetzt, wo es der Übersicht hilft. Dennoch wäre eine Gesamtübersicht der Entwurfsmuster mit deren Klassenbeziehungen am Ende des Buches schön gewesen.\nEin Problem bei der Umsetzung der Entwurfsmuster im Buch ist aber, dass nicht jede Realisierung sofort klar ist. Beispielsweise wird beim State-Pattern eine Lösung eingesetzt, in der ein Zustand das Hauptobjekt und seine Folgezustände kennen muss. Da man normalerweise eine lose Koppelung anstrebt, ist das verwunderlich, wird aber später erklärt. Dies passiert dem Autor an vielen Stellen im Buch, dass die Motivation für eine Umsetzung oder einen Exkurs (wie z. B. die Tabellenmodelle auf Seite 45) erst ganz am Ende des Abschnitts erklärt werden. Als Leser fragt man sich aber viel eher, wieso etwas auf eine bestimmte Art und Weise gemacht wird oder was dieser Exkurs genau bringen soll.\nOb die Auswahl der Patterns sinnvoll ist, darüber lässt sich sicherlich streiten. Florian Siebler orientiert sich an den Entwurfsmustern der Gang of Four, was so schlecht nicht sein kann. Dabei wird aber beispielsweise auch das Interpreter-Pattern erklärt, was so speziell und komplex ist, dass es vor allem für Einsteiger schwer zu verstehen ist.

Fazit

Mit dem Buch „Design Patterns mit Java“ will Florian Siebler laut Untertitel eine „Einführung in Entwurfsmuster“ geben. Vergleicht man direkt mit dem GoF-Buch, was ja als Vorlage diente, so ist ihm das gelungen. Wo das GoF-Buch doch eher trocken herüberkommt, gibt es bei Siebler meist einfach zu verstehende Beispiele, die teilweise mit Pop-Culture-Referenzen gespickt sind. So liest sich das Buch recht flüssig und unterhaltsam.\nOhne Java-Kenntnisse fällt es aber oft schwer zu folgen. Vor allem die Nachweise in den Java-Bibliotheken sind nicht immer verständlich, wenn man die Bibliothek noch nie genutzt hat. Glücklicherweise sind die Nachweise aber nur ein Zusatz. Die Entwurfsmuster werden immer auch an einem eigenen Beispiel erprobt.\nDiese Beispiele wiederum werden leider nur zum Teil abgedruckt. Es ist so nicht möglich, ohne Internetzugang allen Ausführungen zu folgen bzw. diese nachzuimplementieren. Teilweise empfindet man die zahlreichen Verweise auf die Buchwebseite patternsbuch.de sogar als störend, weil sie den eigentlichen Gedanken- bzw. Arbeitsfluss unterbrechen.\nUnd wenn es um Entwurfsmuster und Java geht, drängt sich ein Vergleich mit dem Buch „Entwurfsmuster von Kopf bis Fuß“ („Head First Design Patterns“) natürlich auf. Hier hat das Head-First-Buch nicht nur den Kopf, sondern auch die Nase vorn. Didaktisch ist es sowieso nicht zu schlagen, aber alle Beispiele sind so einfach, verständlich und vor allem unterhaltsam gehalten, dass das Lesen und Durcharbeiten einfach nur Spaß macht. Vor allem können auch Nicht-Java-Programmierer das Head-First-Buch fast ohne Probleme durcharbeiten (wenn auch nicht ganz).\nWer also eine etwas nüchterne, aber dennoch unterhaltsame Erklärung der GoF-Entwurfsmuster sucht und diese auch noch mit Java umsetzen will, kann ohne Bedenken zum Buch von Florian Siebler greifen. Wer dagegen keine Java-Kenntnisse hat und das eher trockene GoF-Buch mit seinen C++-Beispielen nicht durcharbeiten möchte, dem sei „Entwurfsmuster von Kopf bis Fuß“ empfohlen (am besten im englischen Original, was weniger Fehler aufweist).

Veröffentlicht auf Textico.de

Patterns wider dem OOP-Chaos: Java-Entwickler und IT-Ausbilder Florian Siebler programmiert nicht nur für den Lebensunterhalt – anders lässt sich sein ansteckender Enthusiasmus und sein an eine „Mission zur Verständlichkeit“ grenzendes didaktisches Geschick nicht erklären: Design Patterns mit Java: Eine Einführung in Entwurfsmuster ist ein praktischer und gleichzeitig kritischer Einstieg in die Arbeit, die Möglichkeiten und die Grenzen von Entwurfsmustern mit Java. Design Patterns sind ein spannendes Thema! Und Sie werden Spaß haben, wenn sie dieses Thema durcharbeiten

Als Leser sollte man Grundlagenkenntnisse in Java (das er als Beispielsprache verwendet) oder einer anderen objektorientierten Programmiersprache mitbringen, um die 327 Seiten von den objektorientierten Entwurfsprinzipien (Abstraktion, Kapselung, Vererbung und Polymorphie) über die Java Datenmodelle und fortgeschrittenen Konzepte sowie die zahlreichen praktischen Beispielen effektiv nutzen zu können. Grundlage bilden dabei die 23 Design Patterns der „Gang of four“, die er praktisch lösungsorientiert, mit grundlegenden „Warum“-Fragen für den Leser seziert.

Sieblers Vorgehen ist dabei praktisch-intensiv, jedoch immer mit einem Auge auf die Praxis und den praktisch-relevanten Inhalt des Gelernten:

In allen Patterns-Büchern finden Sie eine Vielzahl von Klassendiagrammen. Siebler hat sich bewusst entschieden, sehr sparsam mit Diagrammen umzugehen. Die Diagramme vieler Patterns gleichen sich zu sehr, um einen Erkenntnisgewinn daraus zu ziehen. Sie profitieren sehr viel mehr, wenn Sie die Beispiele im patternCoder nachvollziehen.

Siebler ist auf einer Mission: Spaß und gutes Programmieren. Das geht bei ihm Hand in Hand und ergänzt sich – deshalb ist Design Patterns mit Java: Eine Einführung in Entwurfsmuster ein Programmierbuch mit dem Schwerpunkt Muster, aber auch eine Sammlung an Tipps, Tricks und Kniffen rund um die Java-Programmierung. Mit machen, verstehen, lernen und selbst umsetzen. Ein Praxisbuch at its best.

Wolfgang Treß

Rezension: Design Patterns mit Java

Die Entwurfsmuster der Gang of Four sind die wohl bekanntesten Entwurfsmuster in der objektorientierten Programmierung. Zu dem Thema sind neben dem Originalwerk von Erich Gamma und Kollegen dutzende, wenn nicht hunderte von Büchern erschienen. Relativ jung ist das Buch “Design Patterns mit Java” von Florian Siebler, welches vergangenes Jahr im Hanser Verlag erschienen ist. Es verspricht eine praktische Einführung in die 23 Entwurfsmuster anhand der Programmiersprache Java.

Inhalt

Das Buch umfasst etwas mehr als 300 Seiten und besteht aus 24 Kapiteln: eines für jedes der Entwurfsmuster plus einem Kapitel, welches die wesentlichen objektorientierten Entwurfsprinzipien wie beispielsweise das “Single Responsibility Principle” erläutert. Die Beschreibung jedes Entwurfsmusters startet – anders als im Original von Gamma et. al. – nicht mit einer (im Original zugegebenermaßen) abstrakten Zweckbeschreibung, sondern mit den gedanklichen Grundlagen, die dem Entwurfsmuster zugrunde legen. Anhand von Codebeispielen wird Schritt für Schritt die Idee und die Motivation für das jeweilige Entwurfsmuster erläutert, was dazu beiträgt, dass das Buch sehr praxisnah und weniger theorielastig ist.

Bewertung

Alles in allem ist das Buch eine gelungene Einführung in das Thema Entwurfsmuster. Es ist didaktisch sehr schön aufgebaut, praxisnah und nicht so theorielastig wie viele andere Bücher über Entwurfsmuster.

Dennoch hätte ich mir für jedes einzelne der Entwurfsmuster ein entsprechendes Klassendiagramm gewünscht. Auch wenn der Autor diese bewusst weglässt, denke ich, dass diese doch zur Übersicht beigetragen hätten. Ich kann nachvollziehen, dass Klassendiagramme auf Einsteiger zunächst eine relativ abstrakte Wirkung haben, für das schnelle Auffrischen der Idee hinter einem Entwurfsmuster sind sie meines Erachtens aber besser geeignet als nur reiner Quelltext.

Zudem hätte ich mir mehr praxisnähere Beispiele gewünscht. Für die Entwurfsmuster State, Strategy und Decorator beispielsweise ist das sehr schön gelungen. Hier werden neben fiktiven Beispielen auch Anwendungen der Entwurfsmuster aus der Java-Standardbibliothek gezeigt.

Trotz dieser Kritikpunkte halte ich das Buch für didaktisch sehr durchdacht, sehr strukturiert und für Einsteiger in die Materie durchaus geeignet.

Fazit

Das Buch lohnt sich für alle, die sich bisher noch nicht mit dem Thema der Gang of Four Entwurfsmuster beschäftigt haben und diese anhand von Java lernen und verstehen wollen. Es ist vom Aufbau dabei sehr pragmatisch und stellt die abstrakte Beschreibung der Entwurfsmuster den Grundlagen hintenan, was didaktisch durchaus Sinn macht. Weniger sinnvoll halte ich dagegen den fast vollständigen Verzicht auf Klassendiagramme. Dennoch insgesamt für Einsteiger sehr zu empfehlen.

Philip Ackermann

Sehr gut verständliche Einführung in Design Patterns

Ich habe als Student (der Informatik) damals versucht, das Original-Buch der Gang of Four zu verstehen. Damals ist mir das nicht wirklich gelungen, denn meine Studieninhalte bewegten sich damals eher auf der theoretischen Seite der Informatik. Mehr als ein erster Eindruck „könnte hilfreich sein“ ist nicht hängen geblieben.\nHeute, nachdem ich einige Jahre mit diversen Programmiersprachen zugebracht, und mittlerweile nur noch privat ein wenig programmiere, hat mir dieses Buch beim „Wiedereinstieg“ in das Thema Design Patterns sehr geholfen. Ich habe es mir letzten Dezember gekauft und seitdem alle (ja, wirklich alle) Beispielprojekte durchgearbeitet.\nDabei sind bei mir einige Anmerkungen dazu entstanden (ich habe 12 Fehler in den Programmen und 11 Errata im Buch gefunden, einige refactorings durchgeführt, sowie nahezu alle Methoden erst einmal mit JAVADOC-Kommentaren versehen).\nDas ist auch einer der Vorwürfe, die ich dem Autor mache: Die Beispiele sind fast gar nicht im Quellcode kommentiert.\nDer zweite ist die doch sehr spärliche Verwendung von Diagrammen, die auch mir mehr geholfen hätten.\nDie Idee, sich diese Diagramme mit dem patternCoder selbst zu erarbeiten, ist sicherlich auch eine Variante, aber sehr arbeitsintensiv und für das „mal eben überfliegen“ nicht geeignet.

Den Vorwurf eines anderen Rezensenten, dass zu wenig Code im Buch abgedruckt sei, kann ich nicht nachvollziehen. Vernünftig lesbarer Java-Code kann sehr lang werden und würde bei der Fülle der Beispiele und ihrer Varianten sicher mehr als „nur 30 Seiten“ füllen. Immerhin handelt es sich um über 100 Projekte mit über 600 Java-Dateien. Sich dann dort in gedrucktem Code durchzuarbeiten, halte ich für wesentlich schwieriger, als die Analyse des Codes in NetBeans, Eclipse oder auch nur einem einfachen Editor mit Syntax-Highlighting.\nDie für die Erläuterung des jeweiligen Patterns und der Änderungen zur „Vorversion“ des jeweiligen Beispiels relevanten Codestellen sind aber im Buch abgedruckt.

All das habe ich seit Dezember mit dem Autor mitgeteilt, der meine Hinweise sehr dankbar und freundlich aufgenommen hat, und sogar bereits einige meiner Anpassungen wieder zum Download in den Beispielprojekten bereit gestellt hat. Der Kontakt ist über die Webseite entstanden, der Autor antwortet in der Regel sehr zeitnah.\n(Nein, ich kriege kein Geld oder sonstige Leistungen für diese Rezension. Weder vom Autor noch vom Verlag)

Die Gestaltung der Beispiele halte ich für halbwegs passend. Aus dem gebotenen lassen sich aus meiner Sicht durchaus praktisch verwendbare Dinge gestalten bzw. ableiten, die aber in einem Buch zur Erläuterung von Design Patterns einfach zu groß geraten würden. Das Problem der Beschränkung auf das Notwendige ohne das Abrutschen ins Triviale hat der Autor aus meiner Sicht in den meisten Fällen sehr gut gelöst.

Mein Fazit: Natürlich hat das Buch noch Verbesserungspotential, aber es ist ein sehr gut lesbares Arbeitsbuch für den, der das Thema auch am Rechner bearbeiten möchte. Da der Autor die Patterns auch nicht nur einfach vorstellt, sondern anhand eines Problems auch die Entwicklung dahin vorführt, ist es auch wesentlich verständlicher als das rein präsentierende Original.

Olaf Musch