zoukankan      html  css  js  c++  java
  • 最佳实践 状态设计

    1. 不要状态回溯

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

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

      例子: 取消状态.

      背景:

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

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

      新需求, 产品需求:

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

      新的解决方案:

      1. 多个状态法

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

          2.增加字段:

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

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

    B---D 

    A--C

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

    我的另外一篇文章. 

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

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

       

      

  • 相关阅读:
    变量声明和定义的关系
    STL之Vector
    STL之顺序容器
    类成员函数可以为回调函数吗
    排序
    名字查找
    Java 写 Log
    Spring 框架中注释驱动的事件监听器详解
    Centos7 安装gitLab
    世界经济史是一部基于假象和谎言的连续剧
  • 原文地址:https://www.cnblogs.com/fei33423/p/8150057.html
Copyright © 2011-2022 走看看