责任链模式相对简单,主要是将任务进行迭代查找,最典型的应用是tomcat 中过滤器的应用好了 废话不说 贴代码 以上代码也是在网上找了个比较典型的代码并非原创,请作者见谅主要是共同学习分享

public abstract class Handler {

/**

* 抽象处理者角色

* **/

// 后继持有者

protected Handler successor;

// 示意处理请求的方法 虽然该方法没有传入参数但是实际可以传入参数的

public abstract void handleRequest();

// 必须有取值和放值方法

public Handler getSuccessor() {

return successor;

}

public void setSuccessor(Handler successor) {

this.successor = successor;

}

}

package com.test.pattern.chain;

public class ConcreteHandler extends Handler{

 /**

     * 判断是否有后继的责任对象

     * 如果有,就转发请求给后继的责任对象

     * 如果没有,则处理请求

     */

@Override

public void handleRequest() {

// TODO Auto-generated method stub

if(getSuccessor()!=null){

System.out.println("放过请求");

         getSuccessor().handleRequest();    

}else{

System.out.println("处理请求");

}

}

}

package com.test.pattern.chain;

public class Client {

public static void main(String[] args){

// 组装责任链

Handler handler1 = new ConcreteHandler();

    Handler handler2 = new ConcreteHandler();

    handler2.setSuccessor(handler1);

//     提交、

    handler2.handleRequest();

    handler1.handleRequest();

}

}

其实这里有个值得思考的问题,为什么很多设计模式定义标准使用接口,而这里是用抽象类呢,主要是抽象类起到骨架作用,