25 Chain of Command mit Builder Pattern

25.1 Chain of Command

Die Chain of Command ist ein Verhaltensmuster, bei dem eine Anforderung entlang einer Kette von Verarbeitungsobjekten weitergereicht wird.

Chain of command

25.1.1 Chain of Command Beispiel

interface Handler {
    void setNext(Handler next);
    void handleRequest(String request);
}

class ConcreteHandlerA implements Handler {
    private Handler next;
    
    public void setNext(Handler next) {
        this.next = next;
    }

    public void handleRequest(String request) {
        if ("A".equals(request)) {
            // Verarbeite die Anforderung
        } else if (next != null) {
            next.handleRequest(request);
        }
    }
}

25.2 Builder Pattern

Das Builder Pattern dient zur Erzeugung komplexer Objekte und ist besonders nützlich, wenn ein Objekt zahlreiche Konfigurationsmöglichkeiten hat.

25.2.1 Builder Pattern Beispiel

class Product {
    private String partA;
    private String partB;

    static class Builder {
        private String partA;
        private String partB;

        Builder setPartA(String partA) {
            this.partA = partA;
            return this;
        }

        Builder setPartB(String partB) {
            this.partB = partB;
            return this;
        }

        Product build() {
            Product product = new Product();
            product.partA = this.partA;
            product.partB = this.partB;
            return product;
        }
    }
}

25.3 Kombinierte Verwendung

Die Chain of Command kann mit dem Builder Pattern kombiniert werden, um die Konfiguration der Handler-Kette zu vereinfachen.

class HandlerChainBuilder {
    private Handler head;
    private Handler tail;

    HandlerChainBuilder addHandler(Handler handler) {
        if (head == null) {
            head = handler;
            tail = handler;
        } else {
            tail.setNext(handler);
            tail = handler;
        }
        return this;
    }

    Handler build() {
        return head;
    }
}

public static void main(String[] args) {
    HandlerChainBuilder builder = new HandlerChainBuilder();
    builder.addHandler(new ConcreteHandlerA()).addHandler(new ConcreteHandlerB());
    Handler chain = builder.build();
    chain.handleRequest("A");
}

Mit dem Builder Pattern können Sie eine komplexe Chain of Command erstellen und konfigurieren, wodurch der Code lesbarer und wartbarer wird. Durch die Kombination dieser Muster können Sie sowohl die Erstellung als auch die Verarbeitung von Anforderungen effizient gestalten.