Kompakte Java-Beispiele zu allen 23 Entwurfsmustern der „Gang of Four" (plus Interpreter). Gedacht für Schulungen und Selbststudium: jedes Muster steht für sich, ist klein gehalten und in deutscher Sprache benannt — der Code soll das Muster zeigen, nicht produktionsreif sein.
Jedes Muster ist ein eigenes IntelliJ-Modul auf der Repo-Wurzel:
patterns/
├── singleton/
│ └── src/de/zettsystems/patterns/singleton/...
├── strategy/
│ └── src/de/zettsystems/patterns/strategy/...
├── observer/
│ └── src/de/zettsystems/patterns/observer/...
└── ...
Standard-Package: de.zettsystems.patterns.<muster>. Jedes Modul ist
unabhängig — keine gemeinsamen Abhängigkeiten, kein Build-Tool, nur die
JDK.
- JDK 21 (im Projekt-SDK fest verdrahtet,
.idea/misc.xml). - IntelliJ IDEA zum bequemen Ausführen (öffne das Repo-Root als Projekt, alle Module werden automatisch erkannt). Andere IDEs funktionieren ebenso, brauchen aber ggf. manuelles Anlegen der Module.
Erzeugungsmuster
abstractfactory— Abstract Factorybuilder— Builderfactorymethod— Factory Methodprototype— Prototypesingleton— Singleton (mehrere Implementierungs-Varianten: Eager, Lazy, Synchronized Lazy, Double-Checked Locking, Lazy-Holder-Idiom, plus zwei bewusst kaputte Beispiele zum Diskutieren;Demoruft alle nebeneinander auf)
Strukturmuster
adapter— Adapterbridge— Bridgecomposite— Composite (zwei Varianten:breitundschmal— siehe Modul, demonstriert die zwei klassischen Gestaltungsalternativen)decorator— Decoratorfacade— Facadeflyweight— Flyweightproxy— Proxy
Verhaltensmuster
chainofres— Chain of Responsibilitycommand— Commandinterpreter— Interpreteriterator— Iterator (zwei Demos:MyArrayundMyList)mediator— Mediatormemento— Mementoobserver— Observerstate— Statestrategy— Strategytemplatemethod— Template Methodvisitor— Visitor
Repo öffnen → in das gewünschte Modul navigieren → die Demo-Klasse mit
der main-Methode öffnen → grüner Pfeil im Gutter. Welche Klasse pro
Modul den Einstieg bildet (Namen sind nicht einheitlich: Test,
Testklasse, Client, ApplStart, Kontext, …), steht in
AGENTS.md.
Ein Modul kompilieren und ausführen, hier am Beispiel strategy:
mkdir -p out/strategy
find strategy/src -name "*.java" -print0 | xargs -0 javac -d out/strategy
java -cp out/strategy de.zettsystems.patterns.strategy.KontextFür andere Module den Pfad und den vollqualifizierten Klassennamen entsprechend anpassen.
- Sprache: Klassen, Methoden, Variablen und Kommentare sind auf
Deutsch (
Mahlzeit,Pizzeria,bestellen(), …) — bewusst, weil die Beispiele in einem deutschsprachigen Schulungs-Kontext entstanden sind. - Stil: schlicht, lehrbuchnah. Bewusst keine modernen Java-Features, wenn das vom Muster ablenkt.
Pull Requests und Issues sind willkommen, vor allem wenn ein Muster
verständlicher illustriert werden kann oder zusätzliche Varianten
didaktisch hilfreich wären. Hinweise zur Repo-Struktur und zu
Konventionen für neue Module stehen in AGENTS.md.
MIT — Beispielcode darf frei verwendet, angepasst und weitergegeben werden.