责任链模式-老板我要请假

本文介绍了一种设计模式——责任链模式,它通过定义一系列处理对象,使得请求可以在这些对象中传递,直到被某个对象处理。文章详细解释了该模式的工作原理,通过请假审批流程的实例展示了如何使用责任链模式来实现请求的分层处理。
摘要由CSDN通过智能技术生成

定义:使多个对象都有机会处理请求,从何避免请求的发送者与接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象能够处理他为止
优点: 可以随时增加或修改处理一个请求的结构
注意:如果请求到达末端还不能处理,就会出现问题

小李刚入职3天,但是由于加班不适应,想请假调休,找到自己的组长,组长说自己最多给批半天假
超过半天找部门经理,超过5天,找总经理

使用责任链模式则可以很好地实现这个需求
组长:只能处理1天的请假
部门经理:可以处理5天以内的请假
总经理:可以处理5天以上的请假

代码设计实现:

Handler 接口,用来处理请假请求
AbstractHandler:抽象定义 每一级审核者, 实现Handler 接口
Handler1,Handler2,:继承自AbstractHandler,实现具体的处理方法
在这里插入图片描述

具体代码:

Handler

public interface Handler {
    void handle(int request);

}

AbstractHandler:


public abstract class AbstractHandler  implements Handler{
    private Handler successor;//后继处理者,更高级别的

    public Handler getSuccessor() {
        return successor;
    }

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

具体的处理者:
Handler1,Handler2

// 组长,处理1天之内的假期
public class Handler1 extends  AbstractHandler {
    @Override
    public void handle(int request) {
        if(request<=1){//只能处理1天假期的请求
            System.out.println(getClass().toString()+" handling:"+request);
            return;
        }
        //超过半天,交给上级领导批准
        getSuccessor().handle(request);
    }
}

// 部门经理,5天以下的假期
public class Handler2  extends AbstractHandler{
    @Override
    public void handle(int request) {
        if(request<5){
            System.out.println(getClass().toString()+" handling:"+request);
            return;
        }
        getSuccessor().handle(request);
    }
}

测试代码:

public class Test {
    public static void main(String[] args) {
        Handler1 h1=new Handler1();
        Handler2 h2=new Handler2();
        h1.setSuccessor(h2);
        h1.handle(1);// 请假1天
        h1.handle(4);//请假4天

    }
}

效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值