Design Patterns der OTC-Referenz
Pattern, Zweck, Einsatzort und konkrete Begründung.
| Pattern | Zweck | Einsatzort | Begründung |
|---|---|---|---|
| Aggregate Root | Invarianten und Statusübergänge | domain/Order.java | Nur das Aggregate verändert Bestellung und Positionen. |
| Value Object | Validierte unveränderliche Fachwerte | Money, OrderId, CustomerId, ProductId | Ungültige Zustände werden beim Erzeugen verhindert. |
| Ports & Adapters | Entkopplung | application/port und adapter | JPA, Kafka, Payment und Inventory bleiben austauschbar. |
| Saga | Verteilte Ablaufsteuerung | CheckoutService | Bei Inventory-Fehler wird Payment kompensiert. |
| Transactional Outbox | Zuverlässige Events | OutboxEntity, JpaOutboxRepositoryAdapter, OutboxRelay | DB-Commit und Kafka-Publish werden entkoppelt. |
| Idempotency Key | Doppelte Requests verhindern | IdempotencyRepository | Wiederholung liefert dieselbe Bestellung. |
| CQRS Read Model | API-Lesemodell | OrderView | Aggregate wird nicht direkt serialisiert. |
| Exception Translator | Fehler in HTTP übersetzen | ApiExceptionHandler | Domäne bleibt frei von HTTP-Details. |