Glossar & Entwurfsmuster-Sammlung
Fachliche und technische Begriffe plus wichtige Entwurfsmuster für Enterprise Java.
Version 2SammlungCodeDiagramm
In dieser Datei
Glossar als Teamvertrag
Ein Glossar verbindet Fachbereich, Entwicklung, Test, Betrieb und Architektur. Es verhindert, dass derselbe Begriff in mehreren Teams unterschiedlich gemeint ist.
Pattern sind Werkzeuge, keine Dekoration
Entwurfsmuster sind hilfreich, wenn sie ein echtes Problem lösen: Abhängigkeiten kapseln, Erzeugung kontrollieren, Varianten austauschen, Integration robust machen oder Legacy-Sprache isolieren.
Dokumentation im Projekt
Verwendete Muster sollten im Code kurz markiert und zusätzlich in docs/design-patterns.md dokumentiert werden. Das hilft besonders bei Maven-/Java-Projekten und späterer Wartung.
Entscheidungen
| Entscheidung | Gute Praxis | Prüffrage |
|---|---|---|
| Fachliche Grenze | Zuerst Use Case, Invariante und Verantwortlichkeit klären. | Welche Geschäftsentscheidung wird geschützt? |
| Technische Grenze | Framework-/Library-Code hinter Port, Adapter oder Konfiguration kapseln. | Kann die Domain ohne Framework getestet werden? |
| Betrieb | Timeouts, Logs, Metriken, Traces, Security und Rollback definieren. | Wie erkennt der Betrieb Fehler rechtzeitig? |
Ausführliche Beispiele
Pattern-Dokumentation im Projekt
| Pattern | Zweck | Einsatzort | Begründung |
|---|---|---|---|
| Adapter | Externes System kapseln | HttpPaymentAdapter | Use Case kennt kein HTTP |
| Repository | Persistenz verstecken | OrderRepository | Domain bleibt DB-unabhängig |
| Outbox | Events zuverlässig publizieren | OutboxPublisher | Kein verlorenes Event |
| Saga | Verteilten Prozess steuern | OrderSaga | Kompensation statt 2PC |
Typische Stolperfallen
| Stolperfalle | Warum gefährlich |
|---|---|
| Pattern um des Patterns willen | Überabstraktion macht Code schwerer. |
| Muster nicht dokumentiert | Spätere Teams erkennen Absicht nicht. |
| Legacy-Begriffe übernehmen | Alte Modellfehler werden ins neue System getragen. |
Glossar
| Begriff | Erklärung | Kontext |
|---|---|---|
| Aggregate | Fachliche Konsistenzgrenze mit Invarianten | DDD |
| Adapter | Technische Umsetzung eines Ports | Hexagonal |
| Anti-Corruption Layer | Übersetzt Legacy-Modell in neue Domäne | Migration |
| BOM | Zentrale Dependency-Versionierung | Maven |
| Bounded Context | Gültigkeitsbereich eines Modells | DDD |
| Circuit Breaker | Stoppt Aufrufe an gestörte Abhängigkeit | Resilience |
| DTO | Transportobjekt für API oder Adapter | API |
| Idempotenz | Mehrfachausführung ohne doppelten Effekt | Integration |
| Outbox | Event in gleicher DB-TX speichern | Messaging |
| Readiness Probe | Prüft Traffic-Fähigkeit eines Pods | Kubernetes |
| Saga | Langer Prozess mit Kompensation | Architektur |
| TraceId | ID zur Verfolgung über Systeme | Observability |
| Virtual Thread | Leichtgewichtiger Thread für blockierende I/O | Java |
Entwurfsmuster
| Pattern | Zweck | Einsatzort | Begründung |
|---|---|---|---|
| Adapter | Externes System hinter Port verstecken | PaymentAdapter, SoapBillingAdapter | Use Case bleibt technisch unabhängig |
| Repository | Persistenz als fachliche Sammlung kapseln | OrderRepository | Domain kennt keine DB |
| Factory Method | Erzeugung mit Invarianten bündeln | Order.place(...) | Objekte entstehen gültig |
| Strategy | Varianten austauschbar machen | ApprovalPolicy | Keine if-Ketten |
| Transactional Outbox | Events zuverlässig publizieren | OutboxPublisher | Kein verlorenes Event nach Commit |
| Saga | Verteilten Prozess steuern | OrderSaga | Kompensation statt 2PC |
| Anti-Corruption Layer | Legacy-Modell isolieren | LegacyCustomerMapper | Neue Sprache schützen |