Java 职责链模式实现订单审批流程 - 代码示例与解析
Java 职责链模式实现订单审批流程 - 代码示例与解析
职责链模式是一种行为型设计模式,它将多个对象连接成一条链,并允许请求沿着链进行传递,直到被链中的某个对象处理。该模式主要用于将请求的处理责任从发送者分离,并将责任分配给链中的多个对象,实现请求处理的灵活性和可扩展性。
本文通过一个简单的订单审批流程来讲解职责链模式的应用。假设某公司的订单业务处理流程如下:
- 当有一笔订单进来,会先在后台通过初审人员进行审批。
- 初审不通过,订单流程结束。
- 初审通过以后,会转给终审人员进行审批。
- 终审不通过,流程结束。
- 终审通过,流转到财务人员进行处理。
代码实现
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的订单已经处理完成
总结
通过职责链模式,我们成功地将订单审批流程分解为多个处理环节,每个环节都由不同的审批人员负责。这种模式的优点在于:
- 灵活性: 我们可以轻松地添加或删除审批环节,而不影响其他环节。
- 可扩展性: 我们可以轻松地扩展审批流程,例如添加新的审批人员或审批条件。
- 解耦: 发送者和接收者之间解耦,发送者无需关心请求的处理细节。
职责链模式在许多场景中都有广泛的应用,例如工作流引擎、日志记录、权限管理等。
原文地址: https://www.cveoy.top/t/topic/n2sR 著作权归作者所有。请勿转载和采集!