状态机适用场景:
C的操作,需要等到A、B的两个操作(A、B顺序操作),那就需要在 A、B之间创建一个状态机(state machine),C的操作需要状态机达到某一个状态才能进行
1. Overview
java版的状态机的原理其实就是java中的枚举类Enum,所以在进行状态机设计之前,先学习一下(回顾一个java Enum)
2. Java Enums
一个简单的例子:员工请假系统,员工到HR那离(submitted)-> 部门领导(Escalated) -> 部门经理(Approved)
public enumLeaveRequestState {
Submitted,
Escalated,
Approved
}
我们可以这样引用:
LeaveRequestState state = LeaveRequestState.Submitted;
java的枚举也可以包含方法,我们可以在枚举类中写一个抽象方法(abstract),这样枚举类中的每个成员都会继承该方法,这个就是java版状态机的核心所在
public enumLeaveRequestState {
Submitted {
@OverridepublicString responsiblePerson() {return "Employee";
}
},
Escalated {
@OverridepublicString responsiblePerson() {return "Team Le