Java基础-高级特性-枚举实现状态机

Java工程师知识树 / Java基础


状态机又称有限状态机,是一个建立在抽象机器上的计算模型,这个状态机在给定的时间内,只能有一个状态,而每一个状态又可以转换为其他状态(其他状态也是我们自己定义的)。

java的枚举是可以包含方法的。在枚举类中写一个抽象方法(abstract),这样枚举类中的每个成员都会继承该方法,这个就是java版实现状态机的核心所在。

实例代码:

public enum PositionState {
    LowDevelopment {
        @Override
        public PositionState nextState() {
            return MiddleDevelopment;
        }

        @Override
        public String positionDesc() {
            return "初级开发攻城狮";
        }
    },
    MiddleDevelopment {
        @Override
        public PositionState nextState() {
            return HighDevelopment;
        }

        @Override
        public String positionDesc() {
            return "中级开发攻城狮";
        }
    },
    HighDevelopment {
        @Override
        public PositionState nextState() {
            return this;
        }

        @Override
        public String positionDesc() {
            return "高级开发攻城狮";
        }
    };

    public abstract PositionState nextState();//抽象方法(abstract)

    public abstract String positionDesc();//抽象方法(abstract)

    public static void main(String[] args) {

        PositionState development = PositionState.LowDevelopment;
        System.out.println("你现在是:" + development.positionDesc());

        development = development.nextState();
        System.out.println("你现在是:" + development.positionDesc());

        development = development.nextState();
        System.out.println("你现在是:" + development.positionDesc());
    }
}

执行结果:

你现在是:初级开发攻城狮
你现在是:中级开发攻城狮
你现在是:高级开发攻城狮

你可能感兴趣的:(Java基础-高级特性-枚举实现状态机)