以下是一个简单的 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 枚举,用于表示所有可能的订单状态。

Java 订单状态机实现示例

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

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