责任链模式是定义n个请求处理器,连成一条链,请求可以第一个传递到最后一个,可以被任意一个处理器处理
类图
示例
public class Request{
}
public class abstract Handler {
// 后继者,也就是下一个处理器
protected Handler successor;
public Handler(Handler successor){
this.successor = successor;
}
// 处理请求
protected abstract void handle(Request request);
}
定义两个处理器
public class ConcreteHandlerA extends Handler {
public ConcreteHandlerA(Handler successor) {
super(successor);
}
@Override
protected void handle(Request request) {
// do something
// 请求传给下一个处理器处理
if (successor != null) {
successor.handle(request);
}
}
}
public class ConcreteHandlerB extends Handler {
public ConcreteHandlerB(Handler successor) {
super(successor);
}
@Override
protected void handle(Request request) {
// do something
// 请求传给下一个处理器处理
if (successor != null) {
successor.handle(request);
}
}
}
使用:
Handler handler1 = new ConcreteHandlerA(null);
Handler handler2 = new ConcreteHandlerA(handler1);
handler2.handle(request);