状态机FSM
前言
状态机是很奇妙的东西,在做简单的小项目几乎用不上它。但一旦项目复杂想做的功能多了,就必须使用规范的状态机。不然各个状态切换会极其困难。 与其在一个类数百行代码管理数个状态,不如一个状态一个类,这样今后添加修改会方便的多。 我学习了一种常见的状态机写法:
- 每一个状态具有一个独立 的
state
类,其规定这个状态特有的行为; - 有一个或多个
statemachine
类管理state
的切换;
它遵循“状态模式”以及“策略模式”,符合单一职责原则与接口隔离原则。
内容
1. 定义状态接口
首先,定义一个状态接口,每个状态都需要实现这个接口。
public interface IState
{
void Enter();
void Execute();
void Exit();
}
Enter()
:当进入这个状态时执行的逻辑。Execute()
:在这个状态下每一帧执行的逻辑。Exit()