前言
在实际生活中每个对象都具有状态属性, 比如订单会具有(待支付, 待发货, 待收货, 待评价)等一系列的状态. 而不同的行为不同的操作会触发状态的转换. 在编程领域我们可以对对象行为建模描述其生命周期, 而这个工具就叫做状态机
简介
状态机是有限状态机的简称. 有限状态机(英语: finite-state-machine, 缩写: FSM), 又称有限状态自动机(英语: finite-state automaton, 缩写: FSA), 简称状态机. 是表示有限个状态以及在这些状态间转移和动作等行为的数学计算模型.
特点
一个状态机可以具有有限个特定的状态, 它通常根据输入, 从一个状态转移到另一个状态, 不过也可能存在瞬时状态, 而一旦任务完成, 状态机就会立刻离开瞬时状态. 每个状态根据不同的前置条件, 会从当前状态流转至下一个状态.
作用
使用状态机来表达状态的流转, 会使语义更加清晰, 可以增强代码的可维护性和阅读性.
适用场景
面对复杂的状态流转(一般是超过三个或三个以上的状态流转)
实现
状态机实现最简单的就是if-else方案, 但该方案存在以下几个问题
- 复杂的业务流程if-else难以维护
- 可拓展性不好
- 阅读性不好, 牵一发而动全身
- 其它的业务逻辑也容易与if-else代码耦合到一块