【java_设计模式】责任链模式

本文深入讲解了责任链设计模式,通过实例演示了请假审批流程如何使用责任链模式进行高效管理。责任链模式类似单向链表,使得流程上的Handler增删改变得简单,实现了审批流程的灵活配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习路径: https://coding.imooc.com/class/270.html

  • 应用场景
    流程的审批
 public static void main(String[] args) {
        SuperiorHandler superiorHandler = new SuperiorHandler();
        DepartmentHandler departmentHandler = new DepartmentHandler();
        // 确定默审批流程: 直接上级审批 -> 部门经理审批
        superiorHandler.setNextHandler(departmentHandler);
        // 新的请假申请
        Application application = new Application("2019年6月8日20:11:54","病假");
        // 直接上级开始审批请假申请, 执行到这后下一步会把表单传递给部门经理审批,是一种隐式调用
        superiorHandler.deploy(application);
    }
  • 实现
**
 *  抽象处理者
 */
public abstract class Handler {
    // 子类默认持有下一跳的变量,下一跳同样为Handler类型
    protected Handler nextHandler;

    /**
     * 设置下一跳
     * @param handler
     */
    public void setNextHandler(Handler handler) {
        this.nextHandler = handler;
    }

    /**
     * 每一跳的业务逻辑
     * @param application
     */
    public abstract void deploy(Application application);
}
/**
 * 直接上级
 */
public class SuperiorHandler extends Handler{
    @Override
    public void deploy(Application application) {
        application.getReason();
        application.getTime();
        // 直接上级看到消息...省略审批逻辑
        System.out.println("直接上级已审批");
        // 下一跳由应用层指定,若无指定,则流程结束
        if(nextHandler != null) {
            nextHandler.deploy(application);
        }
    }
}
  • 总结
    责任链设计模式有点像单向链表的实现。责任链中的Handler可以增加下一跳的Handler, 任意Handler进行流程扭转的时候,自动携带所有下一跳Handler。一个流程上的Handler增删改方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值