我想对责任链模式有一个直观的感觉。我想一个很好的方法是了解一些现实世界的例子。你们能分享这样的例子吗?
这种模式的一个特点是,如果链有很多阶段,比如说超过 10 个,实现就会变得非常难看。你们怎么办?
我想对责任链模式有一个直观的感觉。我想一个很好的方法是了解一些现实世界的例子。你们能分享这样的例子吗?
这种模式的一个特点是,如果链有很多阶段,比如说超过 10 个,实现就会变得非常难看。你们怎么办?
我认为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();