Design Patterns Master

Sammelwerk zur Enterprise-Master-Reihe. Markdown und HTML sind synchron erzeugt; technische Ordner bleiben stabil.

Dokument: Pattern-KatalogZielgruppe: Entwickler & ArchitektenNiveau: FortgeschrittenStatus: FreigegebenStand: 10.07.2026

Design Patterns Master

Dieses Sammelwerk fasst die in der Master-Reihe verwendeten Entwurfsmuster zusammen. Die Muster sind in Java-Dateien zusätzlich mit // PATTERN: markiert.

Pattern-GruppenDDDArchitekturIntegrationMigrationTestingOperations

Musterkatalog

PatternGruppeZweckEinsatzortWann vorsichtig sein
AggregateDDDSchützt fachliche KonsistenzPolicy, Account, ShipmentNicht für reine DTOs verwenden.
RepositoryDDDAbstraktion für PersistenzPolicyRepository, LedgerRepositoryNicht als beliebige Query-Dumpingstelle missbrauchen.
FactoryCreationalKomplexe Objekterzeugung kapselnPolicyFactory, InvoiceFactoryNicht bei trivialen Konstruktoren übertreiben.
StrategyBehavioralAustauschbare RegelnUnderwritingPolicy, RatingStrategyGut bei Varianten; schlecht bei Einmal-If.
AdapterArchitectureTechnik austauschbar haltenPostgres, MinIO, Legacy, SFTPPorts müssen fachlich bleiben.
FacadeArchitectureKomplexität hinter einfacher API bündelnPortal/Gateway FacadeNicht als God-Service missbrauchen.
CommandBehavioralEine Absicht als Objekt formulierenOpenAccountCommand, BookPaymentCommandGut für Use Cases und Tests.
Result ObjectRobustnessErfolg/Fehler explizit zurückgebenSmoke-Runner und Use CasesNicht Exceptions komplett ersetzen.
OutboxIntegrationEvents zuverlässig publizierenPaymentBooked, PolicyCreatedBraucht Cleanup und Monitoring.
SagaIntegrationVerteilten Ablauf koordinierenE2E Runtime Master 25Nicht für einfache lokale Transaktion.
Anti-Corruption LayerMigrationLegacy-Modell abschirmenMaster 14/24Nicht zum reinen Mapper verflachen.
Strangler FigMigrationLegacy schrittweise ersetzenMaster 24Braucht Routing und klare Schnittgrenzen.

Beispielhafte Pattern-Kette

// PATTERN: Command - fachliche Absicht als Eingabeobjekt
record BookPaymentCommand(String accountId, long cents) {}

// PATTERN: Result Object - Erfolg und Fehler explizit machen
record PaymentResult(boolean success, String message) {}

// PATTERN: Port - Fachkern kennt keine konkrete Datenbank
interface LedgerRepository { void append(LedgerEntry entry); }
⌂ Cockpit