责任型模式之Chain of Responsibility(责任链)模式

1.如果你期望能够允许一个请求沿着对象链不断向上提交,直到这个请求被某一级处理,可使用Chain of Responsibility模式
2.举例

//抽象具体者实现处理方法,如果该具体类可处理则处理,否则传递给下个对象处理
public abstract class Handler {
    private Handler successor;

    public Handler getSuccessor(){
        return successor;
    }

    public void setSuccessor(Handler successor){
        this.successor = successor;
    }

    public void handleRequest(int requestLv) {
        // TODO Auto-generated method stub
        if(requestLv==getLv()){
            System.out.println("该类可以处理请求");
        } else {
            if(getSuccessor()!=null){
                System.out.println("传递给下个对象");
                getSuccessor().handleRequest(requestLv);
            }
        }   
    }

    public abstract int getLv();
}
//第一个具体处理类
public class FirstHandler extends Handler{

    @Override
    public int getLv() {
        // TODO Auto-generated method stub
        return 1;
    }

}
//第二个具体处理类
public class SecondHandler extends Handler{

    @Override
    public int getLv() {
        // TODO Auto-generated method stub
        return 2;
    }

}
//测试类
public class Test {
    public static void main(String[] args){
        Handler fh = new FirstHandler();
        Handler sh = new SecondHandler();

        fh.setSuccessor(sh);

        //fh.handleRequest(1);
        fh.handleRequest(2);
    }
}
//结果
传递给下个对象
该类可以处理请求

3.总结:Chain of Responsibility(责任链)模式可让每个对象都有一次机会决定自己是否处理请求,以便于避免请求的发送者与其接收者之间的耦合。当应用该模式后,客户端代码不必事先知道对象集合中哪个对象可提供自己所需要的服务。当客户端代码发出调用请求之后,该请求沿着责任链转发,知道找到提供该服务的对象为止。
4.参考:http://haolloyin.blog.51cto.com/1177454/342166/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值