In der Softwareentwicklung stößt man immer weider auf die Gang of Four und Design Pattern. Dies wird der erste Beitrag einer Reihe zu dem Thema sein, denn jedes Design Pattern verdient einen eigenen Beitrag, denn sie sind ein wichtiges Handwerkszeug, um sauberen und wartbaren Code zu schreiben.
Ich werde nach und nach alle hier erwähnten Pattern mit einem ausführlichen Codebeispiel vorführen. Die Links zu den neuen Beiträgen werde ich dann ergänzen.
Gang of Four
Die Gang of Four oder kurz auch GoF genannt sind die vier Autoren Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides.
Zusammen haben sie 1994 das Standardwerk Entwurfsmuster oder im englischen original
Design Patterns. Elements of Reusable Object-Oriented Software
geschrieben.
In der schnelllebigen Computerwelt ist dieses Buch steinalt, aber gleichzeitig so fundamental, dass es immer noch aktuell ist.
Der Name Gang of Four entwickelte sich angeblich, weil der Titel des Buches und alle vier Autoren zusammen zu lang für Textnachrichten war.
Entwurfsmuster
Entwurfsmuster sind Baupläne mit der die Entwicklung von sauberer, erweiterbarer und verständlicher Software vereinfacht wird. Man muss das Rad nicht jedes Mal neu Erfinden, wenn man ein komplexes Objekt instanziieren muss. Je nach Anwendungsfall ist eine Factory, ein Builder oder ein Singleton der richtige Bauplan. Bei jedem dieser Entwurfsmuster gibt es spezifische Vor- und Nachteile aus denen sich ihre Anwendungsgebiete ergeben.
Durch die „Standardisierung“ findet man sich in fremden Code leichter zurecht. Und die meiste Zeit verbringt man beim Entwickeln bekanntlich damit, unbekannten Code zu lesen und zu verstehen. Entwurfsmuster erkenne ich wieder, wenn ich sie selbst einige Male angewandt habe und kann so auch komplexe Klassenzusammenhänge leichter erkennen.
Die grundlegenden Entwurfsmuster, die die Gang of Four beschriebene haben, unterteilen sich in drei Gruppen.
- Creational patterns oder Erzeugungsmuster
- Structural patterns oder Strukturmuster
- behavioral patterns oder Verhaltensmuster
Creational patterns oder Erzeugungsmuster
Bei Erzeugungsmuster dreht sich alles um das Erzeugen von Objekten. Was bei kleinen Objekten noch einfach mittels Konstruktoren gelingt, artet schnell in einer langen Liste von Parametern aus, die leicht zu Fehlern führt. Hier können das Erbauer- oder das Fabrikmuster eine Lösung sein, die den Code leserlicher und in der Benutzung einfacher macht. Wenn nur eine einzige Instanz eines Objektes existieren soll, hilft das Singleton weiter.
Die Erzeugungsmuster sind
- Factory method oder Fabrik(methode)
- Abstract factory oder Abstrakte Fabrik
- Singleton oder Einzelstück
- Builder oder Erbauer
- Prototype oder Prototyp
Structural patterns oder Strukturmuster
Strukturmuster beschreiben bewährte Techniken, um Klassen miteinander zu kombinieren, um damit auch komplexe Zusammenhänge abbilden zu können. Nicht alles lässt sich mit Vererbung lösen. Gerade in Sprachen wie Java, in der nur von einem Objekt geerbt werden kann, wird der Bedarf an alternativen Techniken schnell sichtbar. Aber auch, wenn man bestimmten Code nicht ändern kann, weil man z. B. den Quellcode nicht zur Verfügung hat, kann das Muster Adapter eine Lösung sein.
Hier die Erzeugermuster im Überblick
- Wrapper oder Adapter
- Bridge oder Brücke
- Decorator oder Dekorierer
- Facade oder Fassade
- Flywweight oder Fliegengewicht
- Composite oder Kompositum
- Proxy oder Stellvertreter
Behavioral patterns oder Verhaltensmuster
Mit Verhaltensmustern können wir die Interaktion zwischen Objekten gestalten. Zu klassischen Beispielen zählen der Iterator, um sequenziell auf Elemente einer Sammlung von Objekten zuzugreifen, oder die Strategie, um Objekte nachträglich um Funktionen zu erweitern.
Hier die Verhaltensmuster
- Interpreter
- Template method oder Schablonenmethode
- Observer oder Beobachter
- Visitor oder Besucher
- Iterator
- Commando oder Befehl
- Memento
- Strategy oder Strategie
- Mediator oder Vermittler
- State oder Zustand
- Chain of responsibility oder Zuständigkeitskette
Ausblick
Falls ihr nicht bis zu meinen Artikeln warten wollt und das Buch der Gang of Four nicht zur Hand habt,
könnt ihr bei Openlibra GoF Design Patterns - with examples using Java and UML2
lesen.
Die Beispiele sind in Java geschrieben und das Buch steht unter einer CreativeCommons Lizenz.
Bis bald,
seism0saurus