状态机模式代码
时间: 2023-07-03 10:04:29 浏览: 59
以下是一个简单的状态机模式的示例代码:
```python
class State:
def run(self):
assert 0, "run not implemented"
class StateA(State):
def run(self):
print("State A")
return StateB()
class StateB(State):
def run(self):
print("State B")
return StateC()
class StateC(State):
def run(self):
print("State C")
return StateA()
class StateMachine:
def __init__(self):
self.currentState = StateA()
def run(self):
while True:
self.currentState = self.currentState.run()
```
在上面的代码中,我们定义了一个抽象状态类 `State` 和三个具体状态类 `StateA`, `StateB`, `StateC`。每个具体状态类都实现了 `run()` 方法,该方法返回下一个状态对象。我们还定义了一个状态机类 `StateMachine`,该类包含一个当前状态对象,并且可以在 `run()` 方法中不断调用当前状态对象的 `run()` 方法,进而实现状态的切换。
使用该状态机模式的示例如下:
```python
stateMachine = StateMachine()
stateMachine.run()
```
运行结果如下:
```
State A
State B
State C
State A
State B
State C
State A
...
```
可以看到,状态机不断地循环在三个状态之间切换。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)