责任链模式总结如下(可点击放大):

 UML结构图如下:

 示例:

public class ChainTest{
    public static void main(String[] args) {
        Handler handler1 = new HandlerImpl1();
        Handler handler2 = new HandlerImpl2();
        handler1.setNext(handler2);

        handler1.handleRequest("1");
    }
}
public abstract class Handler {
    private Handler next;

    public Handler getNext() {
        return next;
    }

    public void setNext(Handler next) {
        this.next = next;
    }

    //处理请求的方法
    public abstract void handleRequest(String request);
}
public class HandlerImpl1 extends Handler {
    @Override
    public void handleRequest(String request) {
        if ("1".equals(request)) {
            System.out.println("handler 1 负责处理该请求");
        }else {
            if (getNext() != null) { //交给下一级处理请求
                getNext().handleRequest(request);
            } else {
                System.out.println("无法处理该请求");
            }
        }
    }
}
public class HandlerImpl2 extends Handler {
    @Override
    public void handleRequest(String request) {
        if ("2".equals(request)) {
            System.out.println("handler 2 处理该请求");
        }else {
            if (getNext() != null) {
                getNext().handleRequest(request);
            }else {
                System.out.println("无法处理该请求");
            }
        }
    }
}

更多推荐