前言
状态机的概念很可能比任何读者都要古老 这些参考文档的存在,肯定早于Java版本 语言本身。有限自动机的描述可以追溯到1943年 当沃伦·麦卡洛克和沃尔特·皮茨先生写了一篇关于 它。后来,乔治·H·米利提出了一个状态机概念(称为 一台“Mealy Machine”)。一年后,即1956年,爱德华·F· 摩尔发表了另一篇论文,描述了被称为 一台“摩尔机器”。如果 你有没有读过关于状态机的资料,名字,米利和摩尔, 应该早点出现的。
本参考文献包含以下部分:
引言包含了本参考文献的介绍。
使用 Spring 状态机描述了 Spring 状态机(SSM)的使用方式。
状态机示例包含更详细的状态机示例。
常见问题解答包含常见问题解答。
附录包含关于已使用材料和状态机的通用信息。
介绍
1. 背景
状态机之所以强大,是因为它们的行为总是被保证 由于作性,调试相对稳定且相对容易 机器启动时,规则已经被刻在石头上。这个想法是你的 应用现已进入状态,且可能存在于有限的状态中。然后是别的 这种情况会让你的申请从一个州转到另一个州。 状态机由触发器驱动,触发器基于以下 事件或计时器。
在你之外设计高级逻辑要容易得多 应用并与状态机交互,在各种 不同的方式。你可以通过以下方式与状态机交互 发送事件、监听状态机的作,或请求 现在的状态。
传统上,状态机是在 开发者意识到代码库开始显得像一块板子 满是意大利面。意大利面条代码看起来像是永无止境的层级结构 IF、ELSE 和 BREAK 子句的结构,编译器可能应该 当事情开始变得过于复杂时,请开发者回家。
2. 使用场景
当项目适合以下条件时,可以使用状态机:
-
你可以将应用或其结构的一部分表示为状态。
-
你需要把复杂的逻辑拆分成更小且易于管理的任务。
-
该应用程序已经在(例如)下并发问题 异步发生了什么。
当你在尝试实现状态机时,你已经在尝试实现状态机了:
-
使用布尔标志或枚举来模拟情境。
-
设置只对你部分部分有意义的变量 应用生命周期。
-
循环使用if-else结构(或者更糟的是,多个此类结构), 检查某个特定标志是否存在 enum已设置,然后在确定时进一步破例处理。 你的旗帜和枚举组合存在或不存在。