利用状态机使得系统设计透明
2019-08-04 20:32
1766 查看
写在前面
在整个交易平台中,会有多个系统的业务逻辑随着订单的状态变更有不同的业务规则转换,如果在系统中不对状态变更所引发逻辑做较好的设计的话,未来系统这部分代码必将越来越难以维护,变为整个系统腐朽的源头。
有限状态机
订单状态可能是“已下单” -> "已支付" -> "取消" -> "完成"等,这些状态是由某个或某几种动作所触发变更的。
针对这种有限范围内状态变更可以引入“有限状态机”(FSM)进行设计。
我们举个例子,稍晚复杂些,其他状态流转设计可以参考设计:以设备通过GPRS连接到控制中心,通过接受控制中心的指令来改变自身的运行状态,我们可以抽象出系统提供控制设备的API:
状态流转图:
整个设备拥有多个可能的状态,并且在特定状态下接受正确的指令后可以迁移到指令的目标状态,状态机有一个向量图,状态为端点,操作为边,一个状态端点在特定操作的驱动下迁移到另一个状态端点。
针对状态变更流转图可以得到如下问题:
- 一个状态端点可以由哪些状态端点变迁而来?
- 一个状态端点可以变迁到哪些状态端点去?
相关文章推荐
- 面向搜索引擎的内容管理系统(CMS)设计——利用Squid反相代理缓存实现网站内容静态发布 转贴
- 利用工作流引擎技术设计应用系统的思路
- android学习笔记---53_采用网页设计软件界面,以及使用android系统内置的浏览器,利用js调用java方法
- 利用HydroCMS水利设计成果管理系统进行资源整理和项目策划
- 简洁常用权限系统的设计与实现(三):维护和利用节点的深度level,迭代实现树的构造
- Android状态系统——View状态设计
- (一)委托模式简介 委托模式是基本的设计模式之一。委托,即是让另一个对象帮你做事情。 许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。 委托模式使得我们可以用聚合
- C++编程中,利用WINDOWS API获得系统状态信息[CPU占用率,硬盘使用情况,内存使用情况]
- iOS开发:一个瀑布流的设计与实现(已实现缓存池功能,该功能使得瀑布流cell可以循环利用)
- 利用FPGA和USB总线的视频图像的采集与处理系统设计
- 智能车运动状态实时监测系统设计及实现
- 某出版系统发行图书和磁带,利用继承设计管理出版物的类。
- Kubernetes对象之StatefulSets(有状态系统服务设计)
- 利用XML文件以及集合方法设计简单超市管理系统的Java程序
- 利用LPC2378和DS18B20设计室内温度传感系统
- 旋转状态下动态倾角测量系统设计
- 状态机--状态机7,关于战斗兵种的状态机进阶设计与消息系统
- 利用java查看hdfs/hadoop系统的状态与配置
- 对系统版本为4.4及以上的开启 透明状态栏和导航栏(即沉浸式状态栏)
- 谈大规模交易系统架构设计方法--Stateless(无状态web服务)