目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7095.6k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(211)
赞(0)

21、订单状态机怎么设计的?

首先什么是状态机?

状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。有限状态机一般都有以下特点:

  • 可以用状态来描述事物,并且任一时刻,事物总是处于一种状态;
  • 事物拥有的状态总数是有限的;
  • 通过触发事物的某些行为,可以导致事物从一种状态过渡到另一种状态;
  • 事物状态变化是有规则的,A状态可以变换到B,B可以变换到C,A却不一定能变换到C;
  • 同一种行为,可以将事物从多种状态变成同种状态,但是不能从同种状态变成多种状态。

image-20230421152332799

状态机的设计

信息系统中有很多状态机,例如:业务订单的状态。首先要搞清楚有多少个状态,要细分到什么程度。

例如:【待支付】->【已支付】->【已收货】->【已评价】

这些都是系统需要记录的已发生的客观事实。而这些事实就对应了状态,而发生这些事实的事件就对应了触发状态机的转换的事件。根据自己的业务实际进行分析,并画出状态图即可。

订单状态机的设计

日常开发过程中,状态机模式应用场景之一的就是订单模型中的状态控制。但是区别于状态模式的点有以下几个:

  • 状态模式,所有的操作都在内存。而订单状态机是要落库的。为了防止订单的并发操作,更新订单的时候需要使用乐观锁机制。
  • 状态模式的状态对象是新建状态机的时候初始化进去的。在实际开发中,状态对象要复用,被spring管理。
  • 而订单状态机对象对应了一条数据库中实体的订单,是每次从数据库中查出来的即时新建对象,所以必须将该新建的订单状态机对象传入到状态对象中。使用状态对象处理该订单状态机对象。

以支付订单为例

image-20230421153730664

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2