最佳实践 状态设计

1. 不要状态回溯

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

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

  例子: 取消状态.

  背景:

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

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

  新需求, 产品需求:

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

  新的解决方案:

  1. 多个状态法

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

      2.增加字段:

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

 

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

B---D 

A--C

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

我的另外一篇文章. 

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

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

   

 

 

  

 

转载于:https://www.cnblogs.com/fei33423/p/8150057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值