Glossar & Entwurfsmuster-Sammlung

Fachliche und technische Begriffe plus wichtige Entwurfsmuster für Enterprise Java.

Version 2SammlungCodeDiagramm
Diagramm Glossar & Entwurfsmuster-Sammlung
Fachlich-technische Darstellung zu Glossar & Entwurfsmuster-Sammlung.

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

EntscheidungGute PraxisPrüffrage
Fachliche GrenzeZuerst Use Case, Invariante und Verantwortlichkeit klären.Welche Geschäftsentscheidung wird geschützt?
Technische GrenzeFramework-/Library-Code hinter Port, Adapter oder Konfiguration kapseln.Kann die Domain ohne Framework getestet werden?
BetriebTimeouts, 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

StolperfalleWarum gefährlich
Pattern um des Patterns willenÜberabstraktion macht Code schwerer.
Muster nicht dokumentiertSpätere Teams erkennen Absicht nicht.
Legacy-Begriffe übernehmenAlte Modellfehler werden ins neue System getragen.

Glossar

BegriffErklärungKontext
AggregateFachliche Konsistenzgrenze mit InvariantenDDD
AdapterTechnische Umsetzung eines PortsHexagonal
Anti-Corruption LayerÜbersetzt Legacy-Modell in neue DomäneMigration
BOMZentrale Dependency-VersionierungMaven
Bounded ContextGültigkeitsbereich eines ModellsDDD
Circuit BreakerStoppt Aufrufe an gestörte AbhängigkeitResilience
DTOTransportobjekt für API oder AdapterAPI
IdempotenzMehrfachausführung ohne doppelten EffektIntegration
OutboxEvent in gleicher DB-TX speichernMessaging
Readiness ProbePrüft Traffic-Fähigkeit eines PodsKubernetes
SagaLanger Prozess mit KompensationArchitektur
TraceIdID zur Verfolgung über SystemeObservability
Virtual ThreadLeichtgewichtiger Thread für blockierende I/OJava

Entwurfsmuster

PatternZweckEinsatzortBegründung
AdapterExternes System hinter Port versteckenPaymentAdapter, SoapBillingAdapterUse Case bleibt technisch unabhängig
RepositoryPersistenz als fachliche Sammlung kapselnOrderRepositoryDomain kennt keine DB
Factory MethodErzeugung mit Invarianten bündelnOrder.place(...)Objekte entstehen gültig
StrategyVarianten austauschbar machenApprovalPolicyKeine if-Ketten
Transactional OutboxEvents zuverlässig publizierenOutboxPublisherKein verlorenes Event nach Commit
SagaVerteilten Prozess steuernOrderSagaKompensation statt 2PC
Anti-Corruption LayerLegacy-Modell isolierenLegacyCustomerMapperNeue Sprache schützen
⌂ Cockpit