设计模式:状态机设计模式

状态机设计模式

对状态的统一管理

适合在业务需要多种状态下流转的设计模式

状态机的四个要素

现态:当前的状态
事件:触发事件时,状态会发生迁移
动作:发生事件时执行的动作
次态:迁移向的状态

状态机的实现

将业务数据的快照状态记录在数据库中

每一种状态流转时会被记录

将状态机目前的状态记录在数据库中

只会保存最终的状态

定义一个状态接口

描述状态的属性:状态码,状态描述,状态编号

在业务中使用状态机时创建对应的状态机枚举类继承状态接口即可

定义一个事件接口

定义事件的属性:初始状态,目标状态,事件描述,事件代码

在业务中使用状态机进行状态流转时使用对应事件即可

定义一个状态机快照抽象类

定义快照的一些基本属性:快照id,快照状态

在业务中使用快照时继承对应抽象类即可

定义一个事件变更的动作接口

重写接口中的handler方法(),传入快照id,事件,快照实体

规定容器名字定义为(状态机名称_事件)的形式

定义状态机,继承状态机抽象类

状态机具备三个属性

状态机名称

状态机初始状态

状态机执行后处理方法(不重要)

状态机的工作流程

启动状态机时

状态机回到初始状态,保存业务快照,执行后处理方法

statemachine.start(快照id,快照实体)

改变状态机状态时

获取对应的状态处理bean(状态机名字_事件),执行状态变更,更新状态机状态,保存快照,执行后处理方法

statemachine.changeStatus(快照id,对应事件,快照实体)

相关推荐
AI人工智能+电脑小能手7 分钟前
大白话说Java设计模式-46-责任链模式(业务实战篇)
java·设计模式·责任链模式·风控校验·servlet filter·spring interceptor·链式处理
码匠许师傅13 小时前
【设计模式精讲】7.建造者模式(Builder)
设计模式·建造者模式
码匠许师傅13 小时前
【设计模式精讲】6.抽象工厂(Abstract Factory)
c++·设计模式
workflower1 天前
人形机器人灵巧手产业链
人工智能·设计模式·机器人·云计算·无人机
Java后端的Ai之路1 天前
03、Python - 抽象工厂模式
开发语言·python·设计模式·抽象工厂模式·通用智慧
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-45-解释器模式(源码剖析篇)
java·设计模式·解释器模式·源码分析·pattern·spel·javacc
码匠许师傅2 天前
【设计模式精讲】4.单例模式(Singleton)
c++·单例模式·设计模式
雾削木2 天前
2026 编程领域热点知识速览:AI 辅助开发、设计模式实战与嵌入式高效迭代
人工智能·设计模式
AI人工智能+电脑小能手3 天前
大白话说Java设计模式-42-访问者模式(业务实战篇)
java·spring·设计模式·访问者模式·asm·营销规则·数据结构与操作分离
AI人工智能+电脑小能手3 天前
大白话说Java设计模式-43-访问者模式(源码剖析篇)
java·设计模式·访问者模式·源码分析·elementvisitor·asm classvisitor·spring spel