Entwurfsmuster Master 6

PatternZweckEinsatzortBegruendung
Aggregate RootInvarianten kapseln*-domain/*Aggregate.javaFachlogik bleibt konsistent.
Factory MethodGueltige Objekte erzeugencreate(...), ManifestFactoryKonstruktion wird kontrolliert.
SpecificationRegeln als Objekt*Policy.javaRegeln werden testbar und kombinierbar.
Strategyaustauschbare FachregelnPolicies und AdapterVerhalten bleibt konfigurierbar.
Domain Servicefachliche Operation ohne Infrastruktur*Service.javaKern bleibt sauber.
Use CaseAnwendungsvorgang explizit*-application/*UseCase.javaAblauf wird lesbar.
Port and AdapterInfrastruktur entkoppelnUseCase Ports, AdapterCloud, VM, Bare Metal bleiben austauschbar.
Anti-Corruption LayerFremdmodelle schuetzenSOAP, MQ, Oracle, SFTPLegacy beeinflusst Domain nicht.
OutboxEvent-Publishing robust machenoutbox-coreDB-Transaktion und Broker werden entkoppelt.
SagaLanglaeufer koordinierensaga-core, CheckoutKompensation statt verteilter XA.
CQRSSchreib-/Lesemodell trennencqrs-coreRead Models werden optimiert.
CommandDeploy- und Prozessschritte*Plan.javaSchritte sind protokollierbar.
CompositePlan aus SchrittenDeployment-ModuleKomplexe Abläufe bleiben klein.
FacadeBetriebssicht buendelnHealthCheck, RunbooksOperations wird einfacher.
Registry/ObserverHandler verwaltenPlatform RegistryEvents koennen erweitert werden.
BuilderKonfiguration sicher erzeugen*Configuration.javaLesbare, robuste Instanziierung.
Template MethodStandardablauf kapselnPlatform executeQuerschnittslogik zentral.
DecoratorZusatzverhalten ergaenzenResilience/ObservabilityMessen, Retry, Security ohne Kernumbau.

Alle Java-Dateien markieren Muster zusätzlich direkt mit // PATTERN:.

Spring/Jakarta Erweiterung

PatternZweckEinsatzortBegründung
AdapterFramework-Code vom Kern trennenSpring Controller, Jakarta ResourceErleichtert Austausch von Spring/Jakarta ohne Domain-Umbau
DTOExterne API stabil haltenRequest/Response RecordsVerhindert Leaking von Domain-Objekten
Dependency InjectionKomponenten lose koppelnSpring Beans, CDI BeansTestbarkeit und klare Verdrahtung
RepositoryPersistenz abstrahierenSpring Data/Jakarta Persistence AdapterFachlogik bleibt datenbankneutral
Application ServiceAblauf explizit modellierenUseCase/Service KlassenTransaktionale Schritte nachvollziehbar
Domain EventZustandswechsel sichtbar machenCDI Event, Spring Event, OutboxIntegration ohne harte Kopplung
Front ControllerHTTP zentral entgegennehmenSpring MVC/RESTEinheitliche Fehler- und Security-Schicht
Unit of WorkSpeicherschritt zusammenhaltenJakarta Persistence/JPAKonsistenz im Transaktionsrahmen
⌂ Cockpit