Design Patterns im Code
Kompakte Übersicht der verwendeten Entwurfsmuster mit direkt verlinkten, browserlesbaren HTML-Codeansichten der unveränderten Java-Dateien.
Ports & Adapters / Hexagonal Architecture
Fachliche Use Cases hängen nur von Ports ab
03_after_refactoring_modular/claim-application/src/main/java/com/seb4u/demo/claims/application/port/ClaimRepository.java
Repository
Der Use Case arbeitet gegen ein fachliches Repository-Interface statt direkt gegen JPA/JDBC/Stored Procedures.
03_after_refactoring_modular/claim-application/src/main/java/com/seb4u/demo/claims/application/port/ClaimRepository.java
Adapter
Externe Systeme werden an fachliche Ports angepasst.
03_after_refactoring_modular/claim-infrastructure/src/main/java/com/seb4u/demo/claims/infrastructure/document/FileShareDocumentStorageAdapter.java
Anti-Corruption Layer
Legacy-Begriffe und Fremdsystemmodelle werden in interne fachliche Modelle übersetzt.
03_after_refactoring_modular/claim-infrastructure/src/main/java/com/seb4u/demo/claims/infrastructure/fraud/FraudRiskSoapAntiCorruptionAdapter.java
Command Object
Alle Eingaben eines Use Cases werden in einem expliziten Command gebündelt.
03_after_refactoring_modular/claim-application/src/main/java/com/seb4u/demo/claims/application/command/ProcessClaimDecisionCommand.java
Command Handler / Use Case Interactor
Ein Handler orchestriert genau einen fachlichen Anwendungsfall.
03_after_refactoring_modular/claim-application/src/main/java/com/seb4u/demo/claims/application/handler/ProcessClaimDecisionHandler.java
Policy / Domain Service
Regeln, die nicht sauber in eine einzelne Entity passen, werden als Policy modelliert.
03_after_refactoring_modular/claim-domain/src/main/java/com/seb4u/demo/claims/domain/ClaimTransitionPolicy.java
Specification
Eine fachliche Bedingung wird als wiederverwendbares Objekt formuliert.
03_after_refactoring_modular/claim-domain/src/main/java/com/seb4u/demo/claims/domain/policy/CoverageSpecification.java
State Transition / State-Machine light
Erlaubte Statuswechsel werden zentral modelliert und validiert.
03_after_refactoring_modular/claim-domain/src/main/java/com/seb4u/demo/claims/domain/ClaimStatus.java
Workflow Orchestrator
Mehrere Use-Case-Schritte und technische Folgeaktionen werden in einem Prozessfluss koordiniert.
03_after_refactoring_modular/claim-workflow/src/main/java/com/seb4u/demo/claims/workflow/ClaimDecisionWorkflowOrchestrator.java
Outbox Pattern
Ereignisse werden zuverlässig gespeichert, bevor sie asynchron veröffentlicht werden.
03_after_refactoring_modular/claim-application/src/main/java/com/seb4u/demo/claims/application/port/OutboxPort.java
Idempotency Pattern
Wiederholte technische Aufrufe werden sicher gemacht, damit z. B. Zahlungen nicht doppelt vorbereitet werden.
03_after_refactoring_modular/claim-application/src/main/java/com/seb4u/demo/claims/application/port/IdempotencyPort.java
Mapper / Translator
Legacy- oder API-Formate werden in interne Begriffe übersetzt.
03_after_refactoring_modular/claim-soap-api/src/main/java/com/seb4u/demo/claims/soap/ClaimSoapCompatibilityMapper.java
DTO
Transportdaten werden von Domain-Objekten getrennt.
03_after_refactoring_modular/claim-rest-api/src/main/java/com/seb4u/demo/claims/rest/ClaimDecisionRequest.java
Registry / Composition Root light
Adapter-Zuordnungen werden nachvollziehbar dokumentiert bzw. zentral gesammelt.
03_after_refactoring_modular/claim-infrastructure/src/main/java/com/seb4u/demo/claims/infrastructure/config/AdapterRegistryV9.java
Test Data Builder
Testdaten werden lesbar und variierbar aufgebaut.
03_after_refactoring_modular/claim-application/src/test/java/com/seb4u/demo/claims/application/builder/ClaimTestDataBuilder.java
Object Mother
Häufig verwendete Standard-Testobjekte werden über sprechende Methoden bereitgestellt.
03_after_refactoring_modular/claim-application/src/test/java/com/seb4u/demo/claims/application/fixture/ClaimObjectMother.java
Fake / Spy Test Double
Ports werden im Test durch kontrollierbare Ersatzimplementierungen ersetzt.
03_after_refactoring_modular/claim-application/src/test/java/com/seb4u/demo/claims/application/fake/InMemoryClaimRepository.java
Strangler Fig Pattern
Legacy-Funktionen werden schrittweise durch neue Module ersetzt, ohne Big-Bang-Migration.
03_after_refactoring_modular/migration-tests/src/test/java/com/seb4u/demo/claims/migration/LegacyVsModularDecisionComparisonTest.java
Golden Master / Characterization Test
Legacy-Verhalten wird vor dem Refactoring eingefroren und später mit der neuen Implementierung verglichen.
02_refactoring_steps/02_golden_master/GoldenMasterSnapshot.java