责任链模式

    xiaoxiao2021-04-19  161

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

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

    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(); 否则,审批成功。直接返回。

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

    内部扭转是动态的。

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

    转载请注明原文地址: https://ju.6miu.com/read-676127.html

    最新回复(0)