Java 职责链模式实现订单审批流程 - 代码示例与解析

职责链模式是一种行为型设计模式,它将多个对象连接成一条链,并允许请求沿着链进行传递,直到被链中的某个对象处理。该模式主要用于将请求的处理责任从发送者分离,并将责任分配给链中的多个对象,实现请求处理的灵活性和可扩展性。

本文通过一个简单的订单审批流程来讲解职责链模式的应用。假设某公司的订单业务处理流程如下:

  1. 当有一笔订单进来,会先在后台通过初审人员进行审批。
  2. 初审不通过,订单流程结束。
  3. 初审通过以后,会转给终审人员进行审批。
  4. 终审不通过,流程结束。
  5. 终审通过,流转到财务人员进行处理。

代码实现

1. 定义订单类

public class Order {
    private String orderId;
    private double amount;
    // 构造方法、getters、setters省略
}

2. 定义审批人员抽象类

public abstract class Approver {
    protected Approver nextApprover;

    public void setNextApprover(Approver nextApprover) {
        this.nextApprover = nextApprover;
    }

    public abstract void approve(Order order);
}

3. 定义具体审批人员类

public class FirstApprover extends Approver {
    @Override
    public void approve(Order order) {
        if (order.getAmount() <= 1000) {
            System.out.println('订单号为' + order.getOrderId() + '的订单初审通过');
            if (nextApprover != null) {
                nextApprover.approve(order);
            }
        } else {
            System.out.println('订单号为' + order.getOrderId() + '的订单初审不通过');
        }
    }
}

public class FinalApprover extends Approver {
    @Override
    public void approve(Order order) {
        if (order.getAmount() <= 5000) {
            System.out.println('订单号为' + order.getOrderId() + '的订单终审通过');
            if (nextApprover != null) {
                nextApprover.approve(order);
            }
        } else {
            System.out.println('订单号为' + order.getOrderId() + '的订单终审不通过');
        }
    }
}

public class FinancialApprover extends Approver {
    @Override
    public void approve(Order order) {
        System.out.println('订单号为' + order.getOrderId() + '的订单已经处理完成');
    }
}

4. 构建责任链

public class Client {
    public static void main(String[] args) {
        Order order = new Order('12345', 4000);
        Approver firstApprover = new FirstApprover();
        Approver finalApprover = new FinalApprover();
        Approver financialApprover = new FinancialApprover();

        firstApprover.setNextApprover(finalApprover);
        finalApprover.setNextApprover(financialApprover);

        firstApprover.approve(order);
    }
}

运行结果

订单号为12345的订单初审通过
订单号为12345的订单终审通过
订单号为12345的订单已经处理完成

总结

通过职责链模式,我们成功地将订单审批流程分解为多个处理环节,每个环节都由不同的审批人员负责。这种模式的优点在于:

  • 灵活性: 我们可以轻松地添加或删除审批环节,而不影响其他环节。
  • 可扩展性: 我们可以轻松地扩展审批流程,例如添加新的审批人员或审批条件。
  • 解耦: 发送者和接收者之间解耦,发送者无需关心请求的处理细节。

职责链模式在许多场景中都有广泛的应用,例如工作流引擎、日志记录、权限管理等。

Java 职责链模式实现订单审批流程 - 代码示例与解析

原文地址: https://www.cveoy.top/t/topic/n2sR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录