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基础-高级特性-枚举实现状态机】执行结果:
你现在是:初级开发攻城狮 你现在是:中级开发攻城狮 你现在是:高级开发攻城狮