Design Patterns Master 7

Modernes Enterprise-Maven-Lernpaket. Markdown wird immer auch als HTML geliefert.

Fachliche MusterArchitektur-MusterCode-Markierung

Design Patterns in Master 7

Fachliche Muster

• Aggregate Root: Order, Invoice, Payment, Shipment.

• Value Object: Money, Tenant, Result, ValidationResult.

• Domain Event: OrderPlaced, PaymentAuthorized, InvoiceCreated, ShipmentCreated.

• Specification: fachliche Prüfregeln für Bestellung, Risiko und Retoure.

Architektur-Muster

• Hexagonal Architecture: Ports in Richtung Fachlichkeit, Adapter nach außen.

• Anti-Corruption Layer: externe Provider und Legacy-Systeme werden übersetzt.

• Outbox: Ereignisse werden transaktional gespeichert und später veröffentlicht.

• Saga: langlaufende kommerzielle Prozesse werden kompensierbar orchestriert.

• CQRS: Schreibmodell und Lesemodell sind getrennt.

Code-Markierung

Im Code sind Muster mit // PATTERN: markiert. Jedes Modul enthält zusätzlich eine README.md und README.html.

Tatsächlich implementierte Patterns der Produktionsreferenz

PatternZweckEinsatzortBegründung
Aggregate RootInvarianten und Statusmaschine schützenotc-reference-application/.../domain/Order.javaAlle Änderungen an Bestellung und Positionen laufen über eine fachliche Grenze.
Value ObjectGeld, IDs und Positionen validierenMoney, OrderId, CustomerId, ProductIdUngültige Zustände werden bereits beim Erzeugen verhindert.
Ports & AdaptersDomäne von JPA, Kafka, Payment und Inventory entkoppelnapplication/port und adapterFachlogik bleibt testbar und technische Adapter austauschbar.
SagaPayment und Inventory koordinierenCheckoutServiceBei fehlendem Bestand wird die Payment-Autorisierung kompensiert.
Transactional OutboxDB-Commit und Kafka zuverlässig verbindenOutboxEntity, OutboxRelayVerhindert verlorene Events zwischen Datenbank und Broker.
Idempotency KeyDoppelte POST-Anfragen vermeidenIdempotencyRepositoryWiederholte Requests liefern dieselbe Bestellung.
CQRS Read ModelAPI-Modell von Domain-Interna trennenOrderViewLeseseite bleibt stabil, ohne Aggregate direkt zu serialisieren.
⌂ Cockpit