在什么情况下你选择使用状态机,在时间和复杂性方面减少了什么类型的疼痛?
答案 0 :(得分:5)
状态机非常适合事件驱动的代码。如果您的代码被调用作为对某个事件的响应,则不能使用循环和分支。您将不得不使用状态机,将事件提供给它以更改状态,并让事件处理程序根据机器的当前状态做出反应。
答案 1 :(得分:4)
当工作流程完成时没有预定义步骤时,将使用状态机工作流程。看一下这个定义(来自State Machine Workflows in Windows Workflow Foundation)
工作流是一个定义的过程,由实现所需行为的几个步骤组成。基本上有两种工作流程:顺序工作流程和状态机工作流程。在顺序工作流中,工作流本身所做的所有决策都由工作流本身完成。有一个明确定义的开始和明确定义的结束。在这之间有一个由分支和循环组成的流动来引导流动。这意味着工作流程处于控制之中。
使用状态机工作流程,没有真正的预定义路径来执行特定解决方案的所有步骤。国家机器采取另一种方法。他们等待事件发生,并根据这些事件改变他们的状态。当决策从外部应用程序进入并且不可预测时,将使用状态机。因此,特别是当需要用户交互时,状态机是一种更方便的解决方案。
答案 2 :(得分:3)
状态机和线性工作流是完全不同的问题空间,在应用程序开发方面是无关的。
正在建模的过程驱动方法,您使用状态机进行一个过程,该过程具有多个状态,其中工作单元可以存在,并且可能存在状态的非线性进展。如果存在明显线性的过程,那么没有明显的回溯过程就会使用线性工作流程(或顺序工作流程)。