最佳实践 状态设计 1. 不要状态回溯 2. 状态机多个状态进入到一个状态 从接口的前置状态校验 到 状态模式的方法是否能执行 再 状态机的事件校验 ,状态机

  一旦出现状态回环就进入关闭状态. 新建一个实体. 获取实体列表里不出现这个.

2. 状态机多个状态进入到一个状态

  例子: 取消状态.

  背景:

  订单状态: 新建 - 开始计费 - 结束行程 - 已完成(支付成功)每个状态都可以进入取消状态.

  解决方案:  设置一个取消状态.

  新需求, 产品需求:

     1. 客服:查看取消的渠道,原因.  2. 乘客端: 开始计费后取消后无法查看相关距离,金额.

  新的解决方案:

  1. 多个状态法

    1. 新建后的取消 2.有费用后的取消 取分别的名字. 这个会导致状态太多.

      2.增加字段:

    增加 preStatus 分别记录当前字段. 增加关闭来源: 客服,乘客,超时.

   事件相等,那么他们的to状态必须一致. 由于FSM不进行 当前状态校验, 只校验事件是否合法. 如果这个条件不满足,容易出现并发问题.

B---D 

A--C

这两个事件都是actionA的话就会有问题.

我的另外一篇文章. 

从接口的前置状态校验 到 状态模式的方法是否能执行 再 状态机的事件校验 ,状态机

https://blog.csdn.net/fei33423/article/details/80759352