责任链模式

作用:多个对象都有机会去处理请求,避免请求发送者与接受者之间的耦合。

将这些对象连城一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。

1.是承担责任 

2.传递责任


抽象处理角色:

定义处理请求的接口,抽象方法,定义一个方法为了设定 和 返回下一个处理对象的对象的引用。

public abstract class Handler{
     //下一个处理者的引用
    private Handler nextHandler;
    //处理请求的方法
    public abstract void handleRequest();
    //获取下一处理者引用
    public Handler getNextHandler(){
         return nextHandler;
    }
    public void setNextHandler(Handler next){
         this.nextHandler = next;
    }
}

具体处理角色:

public class ConcreteHandler extends Handler{
     public void handleRequest(){
          //看是否有后继的对象,没有则处理
          if(getNextHandler()!=null){
                 System.out.println("由下一对象处理该请求")
           getNextHandler().handleRequest();
          }else{
               System.out.println("处理请求");
          }
     }

}

客户端使用:

main(){
      Handler handler1 = new ConcreteHandler();
      Handler handler2 = new ConcreteHandler();
      handler1.setNextHandler(handler2);
      handler1.handleRequest();
}


申请报销额度用例。

比如,客户端,请求报销1000元。

项目经理,在500以内,部门经理1000元以内,总经理,1000元以上。

那么我的请求,zhang,费用:1000

首先由项目经理审批 if(fee>500) 则,getNextHandler().handleRequest(); 否则,审批成功。直接返回。

接下来由部门经理审批 if(fee>1000) 则,getNextHandler().handleRequest(); 否则,审批成功。直接返回。


在内部,如果不经过部门经理,那么不传入 后继对象 为部门经理即可。

内部扭转是动态的。

也可以从任何一个地方开始。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值