以下是一个简单的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/7Yo 著作权归作者所有。请勿转载和采集!

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