Design Pattern Catalog
Muster als begründete Entwurfsentscheidungen statt als dekorative Klassennamen. Nutze die Seite während Entwurf und Umsetzung: Arbeite an einem konkreten Codepfad und sichere Fachverhalten, Abhängigkeiten und Wartbarkeit mit passenden Tests.
Arbeitsauftrag
Wann verwenden?
Wenn ein wiederkehrendes Entwurfsproblem mit bekannten Trade-offs gelöst werden soll.
Nicht dafür verwenden
Nicht um Klassennamen aufzuwerten oder unnötige Abstraktion einzuführen.
Definition of Done
Problem und Alternative sind benannt; Pattern-Einsatzort, Nutzen, Kosten und Teststrategie sind im Code nachvollziehbar.
Strategy
Strategy kapselt austauschbare Regeln hinter einem stabilen Vertrag. Das Muster ist sinnvoll, wenn Varianten fachlich benannt, unabhängig testbar und zur Laufzeit oder Konfiguration auswählbar sind.
// Pattern: Strategy
// Zweck: Austauschbare fachliche Preisberechnung
public interface PricingPolicy {
Money calculate(OrderDraft draft);
}
public final class StandardPricingPolicy implements PricingPolicy {
@Override
public Money calculate(OrderDraft draft) {
return draft.lines().stream()
.map(OrderLine::subtotal)
.reduce(Money.ZERO, Money::add);
}
}
Repository und Adapter
Repository modelliert eine domänennah formulierte Sammlung. Der technische Adapter entscheidet über JPA, JDBC, In-Memory oder Remote-Zugriff.
Ein generisches CRUD-Repository ist nicht automatisch ein Domänen-Repository, wenn seine Operationen fachliche Grenzen umgehen.
// Pattern: Repository Port
public interface OrderRepository {
Optional<Order> findById(OrderId id);
void save(Order order);
}
// Pattern: Adapter
final class JdbcOrderRepository implements OrderRepository {
// technische SQL-Abbildung
}
Outbox und Idempotent Consumer
Die Outbox koppelt lokale Zustandsänderung und Veröffentlichungsabsicht in einer Datenbanktransaktion. Ein idempotenter Consumer schützt die Verarbeitung vor erneuter Zustellung.
Beide Muster lösen unterschiedliche Teile eines Ende-zu-Ende-Zuverlässigkeitsproblems.
Praxisartefakt · Pattern Record
- Problem
- Preisregeln ändern unabhängig und benötigen unterschiedliche Tests.
- Pattern
- Strategy mit fachlich benannten Implementierungen.
- Alternative
- Ein Switch bleibt für zwei stabile Regeln einfacher.
- Kosten
- Mehr Typen und Auswahlmechanismus.
- Nachweis
- Jede Regel isoliert getestet; Auswahl besitzt einen Vertragstest.