java enums 如何用于狀態(tài)機(jī)

小樊
85
2024-08-05 22:08:20

在Java中,可以使用enum來(lái)定義狀態(tài)機(jī)的狀態(tài)。一個(gè)簡(jiǎn)單的例子如下:

public class StateMachineExample {
    
    //定義狀態(tài)機(jī)的狀態(tài)
    public enum State {
        START,
        PROCESSING,
        FINISHED
    }

    //初始狀態(tài)為START
    private State currentState = State.START;

    //定義狀態(tài)轉(zhuǎn)移方法
    public void transition(State nextState) {
        currentState = nextState;
    }

    //獲取當(dāng)前狀態(tài)
    public State getCurrentState() {
        return currentState;
    }

    public static void main(String[] args) {
        StateMachineExample stateMachine = new StateMachineExample();

        //開(kāi)始狀態(tài)機(jī)
        stateMachine.transition(State.PROCESSING);
        System.out.println("Current state: " + stateMachine.getCurrentState());

        //狀態(tài)轉(zhuǎn)移
        stateMachine.transition(State.FINISHED);
        System.out.println("Current state: " + stateMachine.getCurrentState());
    }
}

在這個(gè)例子中,我們定義了一個(gè)包含三個(gè)狀態(tài)的狀態(tài)機(jī),分別是START、PROCESSING和FINISHED。在StateMachineExample類中,我們可以通過(guò)transition方法進(jìn)行狀態(tài)的轉(zhuǎn)移,并且可以通過(guò)getCurrentState方法獲取當(dāng)前的狀態(tài)。

通過(guò)使用enum來(lái)定義狀態(tài)機(jī)的狀態(tài),可以使代碼更加清晰和易于理解,并且可以避免使用magic number或者字符串來(lái)表示狀態(tài),提高代碼的可維護(hù)性和可讀性。

0