Was ist ein Entwurfsmuster?
Design Pattern
Ein Entwurfsmuster ist eine erprobte Lösungsschablone für ein wiederkehrendes Entwurfsproblem in der Softwareentwicklung, beschrieben als Zusammenspiel von Klassen und Verantwortlichkeiten statt als fertiger Code.
Im Review fällt der Satz, das solle doch eine Factory werden, und dahinter steht ein Katalog von Lösungen, den ein Teil des Teams kennt und der andere nicht.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
- Bekannt durch
- Das Buch der Gang of Four von 1994
- Umfang dort
- 23 Muster in drei Gruppen
- Gruppen
- Erzeugung, Struktur, Verhalten
- Nutzen
- Gemeinsame Sprache im Entwurfsgespräch
Die drei Gruppen
Die klassische Einteilung stammt aus dem Buch der sogenannten Gang of Four und unterscheidet drei Familien. Erzeugende Muster regeln, wie Objekte entstehen: Die Factory Method überlässt die Wahl der konkreten Klasse einer Unterklasse, das Singleton stellt sicher, dass es von einem Objekt genau eine Instanz gibt.
Strukturelle Muster bauen aus vorhandenen Klassen größere Einheiten. Ein Adapter übersetzt eine fremde Schnittstelle in die, die dein Code erwartet, ein Decorator legt zusätzliches Verhalten um ein Objekt, ohne dessen Klasse zu ändern.
Verhaltensmuster verteilen Abläufe zwischen Objekten. Beim Observer meldet sich ein Objekt bei einem anderen an und wird über Änderungen benachrichtigt, die Strategy tauscht einen Algorithmus zur Laufzeit aus, indem sie ihn hinter einer gemeinsamen Schnittstelle kapselt.
Wozu Muster im Team taugen
Der praktische Nutzen liegt weniger im Code als in der Sprache. Wenn jemand im Review sagt, hier gehört eine Strategy hin, ist damit ein ganzer Satz an Erwartungen transportiert: eine Schnittstelle, mehrere austauschbare Implementierungen, keine Fallunterscheidung im Aufrufer.
Deshalb lohnt sich das Vokabular auch dann, wenn du keinen einzigen Namen aus dem Katalog in deine Klassennamen schreibst. Muster machen Entwürfe vergleichbar und Diskussionen kürzer.
Der häufigste Fehler
Muster werden regelmäßig zu früh eingebaut. Wer eine AbstractFactory schreibt, bevor es die zweite Implementierung überhaupt gibt, hat sich Indirektion gekauft und nichts dafür bekommen. Die Reihenfolge ist umgekehrt: erst die konkrete Lösung, dann beim zweiten oder dritten ähnlichen Fall das Muster herausziehen.
Ein zweiter Klassiker ist das Singleton als getarnte globale Variable. Es macht Abhängigkeiten unsichtbar und Tests mühsam, weil sich der Zustand zwischen zwei Testfällen nicht zurücksetzen lässt. In vielen Fällen ist eine per Konstruktor übergebene Instanz die einfachere Antwort.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Entwurfsmuster und was oft damit gleichgesetzt wird
Entwurfsmuster ordnen einzelne Klassen zueinander, Architekturmuster wie Schichtenarchitektur oder Microservices schneiden ganze Systeme. Der Maßstab ist ein anderer, das Prinzip dasselbe.
Ein Idiom ist an eine Sprache gebunden, etwa RAII in C++ oder Kontextmanager in Python. Entwurfsmuster sind sprachunabhängig beschrieben, auch wenn manche in modernen Sprachen längst als Sprachmittel eingebaut sind.
Ein Antipattern beschreibt eine verbreitete Lösung, die sich regelmäßig rächt, zum Beispiel die God Class. Der Katalog dient hier der Warnung, nicht der Nachahmung.
KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Muster sind eine Sprache, kein Bauplan
Der größte Ertrag liegt nicht im Code, sondern im Gespräch. Wenn im Review jemand sagt, das gehöre hinter eine Fassade, spart dieser eine Satz zehn Minuten Erklärung. Voraussetzung ist, dass alle dasselbe darunter verstehen, und genau daran hakt es in gemischten Teams regelmäßig.
Der häufigste Fehler ist die umgekehrte Reihenfolge. Wer erst ein Muster auswählt und dann das Problem hineinbiegt, baut drei Schichten und mehrere Schnittstellen für einen Fall, den es nie geben wird. Muster gehören an Stellen, an denen dieselbe Änderung schon zweimal wehgetan hat.
Ein Teil des Katalogs stammt aus einer Zeit ohne Funktionen als Werte. In Sprachen, in denen du eine Funktion einfach übergeben kannst, schrumpfen Strategie und Kommando auf wenige Zeilen, und eine eigene Klassenhierarchie dafür ist nur noch Aufwand.
Entwurfsmuster lernen
Wie sich Muster in einer konkreten Sprache anfühlen und wo sie schaden, arbeiten die Trainings zur Softwarearchitektur und Programmierung an echtem Projektcode heraus.
Besonders dicht treten Factory, Builder und Observer in der Java-Welt auf, entsprechend viel Raum bekommen sie in den Java-Kursen für Anwendungsentwicklung .
Kurse, die Entwurfsmuster behandeln
Häufige Fragen
Muss ich den ganzen Musterkatalog auswendig können?
Sind Entwurfsmuster in modernen Sprachen überholt?
Woran erkenne ich, dass ein Muster hier nicht passt?
Deine Ansprechpartner
Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.
Norbert Jansen
Beratung & Inhouse
Plant Inhouse-Trainings, die an euren eigenen Daten und Abläufen ansetzen.
Entwurfsmuster im Kurs statt im Lexikon
Nachschlagen bringt dich bis zum Verstehen. Anwenden lernst du an echten Aufgaben.