美文网首页Java工程师知识树
Java基础-高级特性-枚举实现状态机

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

作者: HughJin | 来源:发表于2021-01-19 09:17 被阅读0次

    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基础-高级特性-枚举实现状态机

        本文链接:https://www.haomeiwen.com/subject/spevaktx.html