写一个Java订单状态机
以下是一个简单的Java订单状态机示例:
public class OrderStateMachine {
private OrderStatus currentStatus;
public OrderStateMachine() {
this.currentStatus = OrderStatus.NEW;
}
public void processPayment() {
if (currentStatus == OrderStatus.NEW) {
currentStatus = OrderStatus.PAID;
// 进行付款操作
} else {
throw new IllegalStateException("Invalid order status for payment processing.");
}
}
public void cancelOrder() {
if (currentStatus == OrderStatus.NEW || currentStatus == OrderStatus.PAID) {
currentStatus = OrderStatus.CANCELLED;
// 进行订单取消操作
} else {
throw new IllegalStateException("Invalid order status for cancellation.");
}
}
public void shipOrder() {
if (currentStatus == OrderStatus.PAID) {
currentStatus = OrderStatus.SHIPPED;
// 进行订单发货操作
} else {
throw new IllegalStateException("Invalid order status for shipping.");
}
}
public OrderStatus getCurrentStatus() {
return currentStatus;
}
}
public enum OrderStatus {
NEW, PAID, SHIPPED, CANCELLED
}
在此示例中,我们定义了一个 OrderStateMachine 类,它包含了当前订单状态,并且有三种可能的状态转换操作:processPayment()、cancelOrder() 和 shipOrder()。如果尝试执行无效的状态转换,则会抛出 IllegalStateException 异常。另外,我们还定义了一个 OrderStatus 枚举,用于表示所有可能的订单状态。
原文地址: https://www.cveoy.top/t/topic/7Yo 著作权归作者所有。请勿转载和采集!