java实现有限状态机(附完整源码)
时间: 2023-07-31 12:07:26 浏览: 112
有限状态机(Finite State Machine,FSM)是一种计算模型,用于描述一个系统在不同状态下的行为。在 Java 中,可以使用状态模式来实现有限状态机。下面是使用状态模式实现有限状态机的完整源码:
```java
public class Main {
public static void main(String[] args) {
// 创建状态机对象
StateMachine machine = new StateMachine();
// 设置初始状态
machine.setState(new StateA());
// 循环执行状态机
for (int i = 0; i < 10; i++) {
machine.handle();
}
}
}
// 状态机类
class StateMachine {
private State state;
public void setState(State state) {
this.state = state;
}
public void handle() {
state.handle(this);
}
}
// 状态接口
interface State {
void handle(StateMachine machine);
}
// 状态 A
class StateA implements State {
public void handle(StateMachine machine) {
System.out.println("State A");
machine.setState(new StateB());
}
}
// 状态 B
class StateB implements State {
public void handle(StateMachine machine) {
System.out.println("State B");
machine.setState(new StateA());
}
}
```
在上面的代码中,我们首先定义了一个状态机类 StateMachine,它包含一个状态 state。然后,我们定义了一个状态接口 State,它包含一个 handle 方法,用来处理状态机的行为。接着,我们创建了两个状态类 StateA 和 StateB,它们分别实现了 State 接口,并且在 handle 方法中分别输出状态信息,并修改状态机的状态。最后,我们在 Main 类中创建了一个状态机对象 machine,将其初始状态设置为 StateA,并循环执行 10 次状态机。
需要注意的是,在使用状态模式实现有限状态机时,需要定义不同的状态类,并在状态类中实现状态转移的逻辑。另外,由于状态机的状态是有限的,因此状态类的数量也是有限的。
阅读全文