职责链模式实现订单审批流程

假设某公司的订单业务处理流程如下:

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

请用职责链模式模拟该场景。

类图内容:

职责链模式类图

其中,Order类表示订单,包含订单号、金额等信息;Approver类是审批人员的抽象类,包含审批方法和下一个审批人员的引用;FirstApprover和FinalApprover是具体的审批人员类,分别处理初审和终审;FinanceHandler是财务处理类,处理审批通过的订单。

**代码实现:**java// 订单类public class Order { private String orderNo; private double amount;

// 省略构造方法、getter和setter方法}

// 审批人员抽象类public abstract class Approver { protected Approver nextApprover;

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

public abstract void processOrder(Order order);}

// 初审人员类public class FirstApprover extends Approver { @Override public void processOrder(Order order) { // 模拟初审逻辑 if (order.getAmount() > 1000) { System.out.println('初审不通过,订单号:' + order.getOrderNo()); } else { System.out.println('初审通过,订单号:' + order.getOrderNo()); if (nextApprover != null) { nextApprover.processOrder(order); } } }}

// 终审人员类public class FinalApprover extends Approver { @Override public void processOrder(Order order) { // 模拟终审逻辑 if (order.getAmount() > 5000) { System.out.println('终审不通过,订单号:' + order.getOrderNo()); } else { System.out.println('终审通过,订单号:' + order.getOrderNo()); if (nextApprover != null) { nextApprover.processOrder(order); } } }}

// 财务处理类public class FinanceHandler extends Approver { @Override public void processOrder(Order order) { System.out.println('财务处理订单,订单号:' + order.getOrderNo()); }}

// 测试类public class Main { public static void main(String[] args) { Order order = new Order('20230801001', 3000);

    FirstApprover firstApprover = new FirstApprover();        FinalApprover finalApprover = new FinalApprover();        FinanceHandler financeHandler = new FinanceHandler();

    firstApprover.setNextApprover(finalApprover);        finalApprover.setNextApprover(financeHandler);

    firstApprover.processOrder(order);    }}

代码说明:

  • Order 类表示订单,包含订单号和金额等信息。* Approver 类是审批人员的抽象类,包含审批方法 processOrder() 和下一个审批人员的引用 nextApprover。* FirstApproverFinalApprover 是具体的审批人员类,分别处理初审和终审。* FinanceHandler 是财务处理类,处理审批通过的订单。

main 方法中,创建了三个审批对象:firstApproverfinalApproverfinanceHandler,并将它们链接起来,形成一个职责链。当一个订单进入流程时,会从 firstApprover 开始进行处理,如果通过,则传递给下一个审批人员,直到最终完成审批或被拒绝。

总结:

职责链模式将请求的处理过程分解为多个步骤,每个步骤都有对应的处理者,并通过链式调用来完成整个流程。它有效地解耦了业务逻辑,并使代码更易于扩展和维护

职责链模式实现订单审批流程 - Java示例

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

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