欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

设计模式:状态机图一览 - II.如何绘制状态机图?

最编程 2024-07-06 17:50:22
...

基本元素

当你需要描述一个对象或系统的行为状态时,相比于直接的语言描述,更推荐使用状态机表或状态机图的形式。

首先我们看一下基本元素:

做需求时,需要了解以下六种元素:起始、终止、现态、次态(目标状态)、动作、条件,我们就可以完成一个状态机图了:

 

①现态:是指当前所处的状态。

②条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。

③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

注意事项

1、避免把某个“程序动作”当作是一种“状态”来处理。那么如何区分“动作”和“状态”?“动作”是不稳定的,即使没有条件的触发,“动作”一旦执行完毕就结束了;而“状态”是相对稳定的,如果没有外部条件的触发,一个状态会一直持续下去。

2、状态划分时漏掉一些状态,导致跳转逻辑不完整。所以在设计状态机时,我们需要反复的查看设计的状态图或者状态表,最终达到一种牢不可破的设计方案。

状态机表怎么画?

首先我们看下下面这张状态机图,展示了一张简单的单审批人文件的状态流转情况。

那么如何把他写成表呢?这里有多种写法,区别于纵坐标的不同,我们举两种:

左侧的纵坐标为初始状态,横坐标为终止状态。

右侧的纵坐标为动作条件,横坐标为终止状态。

那么对于动作比较多且复杂的情况下,可以考虑采用右侧的表格,这样会比较一目了然。