我想要一种直觉的感觉链的责任模式。我想一个很好的方法就是学习一些真实世界的例子。你们能分享这样的例子吗?
这种模式的一个特点是,如果链有多个阶段,比如说超过10个阶段,那么实现就会变得非常糟糕。你们对此做了什么?
发布于 2014-07-30 15:46:47
我认为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();https://stackoverflow.com/questions/25040880
复制相似问题