职责链模式实现订单审批流程 - Java示例
职责链模式实现订单审批流程
假设某公司的订单业务处理流程如下:
当有一笔订单进来,会先在后台通过初审人员进行审批,初审不通过,订单流程结束。初审通过以后,会转给终审人员进行审批,不通过,流程结束;通过,流转到财务人员进行处理。
请用职责链模式模拟该场景。
类图内容:

其中,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。*FirstApprover和FinalApprover是具体的审批人员类,分别处理初审和终审。*FinanceHandler是财务处理类,处理审批通过的订单。
在 main 方法中,创建了三个审批对象:firstApprover、finalApprover 和 financeHandler,并将它们链接起来,形成一个职责链。当一个订单进入流程时,会从 firstApprover 开始进行处理,如果通过,则传递给下一个审批人员,直到最终完成审批或被拒绝。
总结:
职责链模式将请求的处理过程分解为多个步骤,每个步骤都有对应的处理者,并通过链式调用来完成整个流程。它有效地解耦了业务逻辑,并使代码更易于扩展和维护
原文地址: https://www.cveoy.top/t/topic/n2vq 著作权归作者所有。请勿转载和采集!