Java架构师方案——状态机(附完整源码)

本文介绍了Java中状态机的设计模式,阐述了状态机的概念、本质,并探讨了其在复杂业务流程中的应用,如订单交易。通过状态机可以降低程序复杂度,提高可维护性,遵循开闭原则和单一职责原则。文中提到了状态机在工作流引擎、游戏角色状态变化和订单交易等场景中的使用,并提供了一个基于Spring StateMachine的订单交易状态机示例项目。
摘要由CSDN通过智能技术生成

1. 简单介绍状态机

状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。以上是百度百科对状态机的解释。

在百科的解释中,我们可以提炼出状态机的几个要素:存储状态,逻辑电路,预先设定的状态转移路径,外部来的信号,内置的特定操作等。由这些关键要素我们可以推断出以下几点:

  • 状态数据有预先设定的多种值

  • 逻辑电路是完成内置特定操作的基础“代码“(基础设施),由工程司开发

  • 状态能在多种值之间转移

  • 每次转移都由外部信号触发

  • 状态转移触发后,会有相应的内置操作

由以上这些特性共同构成了一个独立的控制中心,而且这个控制中心与外部各种信号是低耦合的,所有外部信号都要接入一个共同的控制中心,最终也由控制中心完成信号的后续流程。

在java开发中,状态机FSM(有限状态机)是一种常见的设计模式,常常用于一些复杂的业务场景,解决繁琐杂乱的if…else…代码段。

“Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.“

-对象内部状态不同会有不同的行为。似乎好像是不同的类一样。

以电梯为例,电梯有4种状态:开门、关门、运行、停止。电梯的动作:开门、关门、运行(上升或下降)、停止(悬停不动)。

Col1 开门行为 关门行为 运行行为 停止行为
开门 态 ✔️
关门 态 ✔️ ✔️ ✔️
运行 态 ✔️
停止 态 ✔️ ✔️
  • 开门状态下,电梯只有关门行为

  • 关门状态下,除了关门行为其他行为都有

  • 运行状态下,只有停止行为

  • 停止状态下,有开门行为和运行行为

状态图如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LMVb6IEd-1603446481387)(/u

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特科技软件开发工作室

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值