状态机的一点思考

  由于系统在实际工作当中,系统有定时任务,及进入某种状态后,部分功能禁止使用。 因此为系统加入状态切换机制。

1) 问题是什么:

      问题是如何保证系统在某些情况下,有些事必须执行,有些事可以执行,有些事禁止执行?

2)本质是什么:

      定义清楚系统所处的状况(状态),每一个状态下所能执行的事件。状态直接转换的出发事件(条件)

3)在实现过程中,经历的1次重构:

       (1):第一次实现:状态定义为(busy,idle,err)。 在执行某项任务前直接设置状态(setState);执行任中已该状态来屏蔽掉不能执行的任务;任务执行完后切换状态(setstate)。

        存在的问题:第一次实现:存在以下问题:状态定义得不够,不能满足各场景需求; 为抓住状态3要义:前一状态,状态切换触发时间,新状态;状态切换过程不够独立。

        (2): 第二次实现: 状态按照各业务场景细分为几十个状态(如INTOSHUTDOWNING_STATE,SHUTDOWN_STATE,INTOSLEPPING_STATE,SLEEP_STATE,EXITSLEEPSTATE 等),状态切换规则独立出来(接口传入前一状态,及状态触发事件,即可获取新状态--切换规则提取为配置文件);系统切换状态时,传状态触发事件transmint(event),状态切换模块会依据当前状态及触发事件类型,切换到新状态(如不满足切换规则,则切换不成功)。

        本质上:状态本身是静态的,它代表了系统的一种重要属性; 状态触发事件代表的是(可能)重建新状态的基本条件;状态切换本事触发动态事件产生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值