状态机图(State Machine Diagram)也叫状态图、有限状态机图(Finite Diagram),是一种描述所有状态及状态之间流转规则的图形。在软件设计领域,“状态”在业务系统中无处不在:订单要有状态,账号要有状态,门 店要有状态,可以说任何对象都有状态。设计状态是一件很有意思的事情,需要注意以下 事项:
- 状态值必须是有限的集合,状态的所有枚举值(即状态值)必须能够涵盖所有实 际可能的情况。
- 状态值之间要互斥,不能出现二义性。
- 为了更准确细致地描述事物,状态还可以具备子状态,比如订单状态“已取消”, 可以定义对应的子状态“客户取消”“商家取消”“系统取消”。
- 状态应该是能持续一定时长的,而不应该是很快就会结束的瞬时态。例如,订单 的状态可以是“待发货”“待评价”,但不能是“评价中”。
通过研究状态之间所有可能的流转规则和逻辑,能够识别状态设计的合理性,并梳理 清楚业务规则。如果用文字描述状态之间的轮转,会非常不方便。通过状态机图,就可以 非常好地解决这个问题。
状态图示例: