JEnterprise Senior Java Workbench
Senior Java · Fachbereich

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.

Zur Übersicht

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.

Muster am konkreten Problem auswählen
Einsatzorte im Code sichtbar dokumentieren
Nachteile und Alternativen mitbewerten
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.

JAVA
// 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.

JAVA
// 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.
⌂ Cockpit