责任链模式实现2
public class Chain2 {
static public interface Handler<A, B> {
public B handle(A x) ;
public void setNext(Handler<A, B> next);
}
static public <A, B, T extends Handler<A,B> > T link(T f, Handler<A, B> g) {
f.setNext(g);
return f;
}
static public <A, B, T extends Handler<A,B> > T link(T[] hs) {
if (hs == null || hs.length < 2) throw new RuntimeException("handlers array is null OR length < 2");
T t = null;
for (int i = hs.length - 1; i >= 1; --i) {
t = link( hs[i - 1], hs[i]);
}
return t;
}
static public abstract class HandlerBase<A, B> implements Handler<A, B> {
private Handler<A, B> next;
public void setNext(Handler<A, B> next) {
this.next = next;
}
public Handler<A, B> getNext() { return next; }
}
}