Die Autoren – Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides – des Buches Elemente wiederverwendbarer objektorientierter Software (Originaltitel Design Patterns. Elements of Reusable Object-Oriented Software) werden oft auch als Gang of Four (dt. Viererbande) oder kurz GoF bezeichnet. Das 1994 herausgegebenes Buch über Entwurfsmuster in der Softwareentwicklung gilt bis heute als eines der Standardwerke im Bereich der Softwaretechnik . Die GoF hat das Buch im Kontext der Programmiersprache C++ geschrieben, es ist aber ebenso relevant für weitere Programmiersprachen wie Java, TypeScript oder Swift.
Entwurfsmuster sind Baupläne mit der die Entwicklung von sauberer, erweiterbarer und verständlicher Software vereinfacht wird. Durch diese Standardisierung findet man sich in fremden Code leichter zurecht und kann komplexe Zusammenhänge leichter erkennen. Man greift sozusagen auf Expertenlösungen zurück und muss das Rad nicht neu erfinden.
Die grundlegenden Entwurfsmuster, die die Gang of Four beschrieben 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. Ziel der Erzeugungsmuster ist es, den Code leserlicher und in der Benutzung einfacher zu gestallten. Beispiele von Erzeugungsmuster sind:
- Factory methods oder Fabrik(methoden)
- Singleton oder Einzelstück
- 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. Beispiele von Strukturmuster sind:
- Wrapper oder Adapter
- Decorator oder Dekorierer
- Facade oder Fassade
Behavioral patterns oder Verhaltensmuster
Mit Verhaltensmustern können wir die Interaktion zwischen Objekten gestalten. Beispiele von Verhaltensmuster sind:
- Interpreter
- State oder Zustand
- Observer oder Beobachter