0

Chain of Responsibility パターンを直感的に感じたい。それを得るには、実際の例について学ぶのが良い方法だと思います。そのような例を共有できますか?

このパターンに関することの 1 つは、チェーンに多数のステージ (10 を超えるステージなど) がある場合、実装が非常に醜くなることです。あなたたちはそれについて何をしますか?

4

1 に答える 1

3

サーブレット フィルターが良い例だと思います。チェーンはあなたのために構築されており、次のチェーンを呼び出すことができます。ただし、建設/配線はここで行われます。

10 が毛むくじゃらの場合は、ビルダーで単純化できます。

interface ChainElement {
    void setNext(ChainElement next);
    void doSomething();
}

class ChainBuilder {
    private ChainElement first;
    private ChainElement current;
    public ChainBuilder then(ChainElement next) {
        if (current == null) {
            first = current = next;
        } else {
            current.setNext(next);
            current = next;
        }
        return this;
    }
    public ChainElement get() {
        return first;
    }
}

次に、建設時:

    ChainElement chain = new ChainBuilder()
            .then(new FirstElement())
            .then(new SecondElement())
            .then(new ThirdElement())
            .get();
    chain.doSomething();
于 2014-07-30T15:46:47.043 に答える