Design Patterns
Die 23 Entwurfsmuster der Gang of Four in Java 21 – jedes mit lauffähigem Code und seiner Ausgabe.
Die Entwurfsmuster aus dem Buch Design Patterns von Gamma, Helm, Johnson und Vlissides (1994), jeweils mit Erklärung und einem lauffähigen Beispiel in Java 21. Jede Beispieldatei lässt sich ohne Build-Tool direkt starten, etwa mit java Singleton.java.
Erzeugungsmuster (Creational), 5
- Abstract Factory: Familien verwandter Objekte erzeugen, ohne konkrete Klassen zu nennen
- Builder: komplexe Objekte schrittweise aufbauen, Konstruktion von Repräsentation getrennt
- Factory Method: Unterklassen entscheiden, welche Klasse instanziiert wird
- Prototype: neue Objekte durch Klonen eines Prototyps
- Singleton: genau eine Instanz mit globalem Zugriffspunkt
Strukturmuster (Structural), 7
- Adapter: inkompatible Schnittstelle an erwartete anpassen
- Bridge: Abstraktion und Implementierung entkoppeln, beide unabhängig variierbar
- Composite: Teil-Ganzes-Hierarchien als Baum, Einzel- und Gruppenobjekte gleich behandeln
- Decorator: Verhalten dynamisch hinzufügen durch Umhüllen
- Facade: vereinfachte Schnittstelle zu einem Subsystem
- Flyweight: viele feingranulare Objekte effizient teilen (intrinsischer vs. extrinsischer Zustand)
- Proxy: Stellvertreter, der den Zugriff auf ein Objekt kontrolliert
Verhaltensmuster (Behavioral), 11
- Chain of Responsibility: Anfrage entlang einer Kette von Handlern weiterreichen
- Command: Anfrage als Objekt kapseln (Undo, Queues, Logging)
- Interpreter: Grammatik einer Sprache als Klassenhierarchie abbilden und auswerten
- Iterator: sequenzieller Zugriff auf Elemente ohne Offenlegung der Struktur
- Mediator: zentrales Objekt steuert die Kommunikation zwischen Kollegen
- Memento: Zustand externalisieren und wiederherstellen, ohne Kapselung zu brechen
- Observer: Abhängige werden bei Zustandsänderung automatisch benachrichtigt
- State: Verhalten ändert sich mit dem internen Zustand (Zustand als Objekt)
- Strategy: austauschbare Algorithmen hinter gemeinsamer Schnittstelle
- Template Method: Algorithmusgerüst in der Oberklasse, Schritte in Unterklassen
- Visitor: neue Operationen auf einer Objektstruktur definieren, ohne deren Klassen zu ändern
Zusätzlich unterscheidet das Buch klassenbasierte Muster (Vererbung, zur Compilezeit: Factory Method, Adapter-Klassenvariante, Interpreter, Template Method) von objektbasierten (Komposition, zur Laufzeit: alle übrigen).