0

我想对责任链模式有一个直观的感觉。我想一个很好的方法是了解一些现实世界的例子。你们能分享这样的例子吗?

这种模式的一个特点是,如果链有很多阶段,比如说超过 10 个,实现就会变得非常难看。你们怎么办?

4

1 回答 1

3

我认为Servlet 过滤器就是一个很好的例子。该链是为您构建的,您可以决定调用下一个。但是,在这里为您完成了施工/布线。

如果 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 回答