状态机又称有限状态机,是一个建立在抽象机器上的计算模型,这个状态机在给定的时间内,只能有一个状态,而每一个状态又可以转换为其他状态(其他状态也是我们自己定义的)。
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());
}
}
执行结果:
你现在是:初级开发攻城狮
你现在是:中级开发攻城狮
你现在是:高级开发攻城狮
网友评论