为什么不使用looplab/fsm,star挺多的啊。
成都创新互联专业为企业提供漳浦网站建设、漳浦做网站、漳浦网站设计、漳浦网站制作等企业网站建设、网页设计与制作、漳浦企业网站模板建站服务,10多年漳浦做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
不是特别喜欢,每次实例化fsm都需要重新传递对应events(虽然我们可以统一封装),我更期望在项目启动时把此项目涉及到不同业务状态机流转注册到fsm,对应:不同业务->[状态]->[事件]->处理事件主体(包含handler、params、hooks、observers等)。
这就是easyfsm的由来。
当你开始进行状态流转时,只需要:
为什么需要区分业务?
因为绝大多数业务的状态值都是从数据库中获取的,比如订单表的订单状态,商品表中的商品状态,有可能值是相同的。
同一个业务同一属性对应状态值表达单一,不同业务下属性状态可能会出现值相同,但所表达的含义是不同的。
整体设计:
简单解释一下:
首先自定义业务、状态、事件。
自定义事件主体:
注册到easyfsm:
开始使用:
完整示例代码如下:
如果想在处理事件函数的前后执行一些hook,或者在事件执行完毕,异步执行一些其他业务,easyfsm定义了这两个接口。
我们可以实现这两个接口:
完整代码:
上面简单介绍了下easyfsm设计以及对应使用姿势。
https://github.com/wuqinqiang/easyfsm
标题名称:聊聊一个用Go实现的有限状态机
本文网址:http://www.shufengxianlan.com/qtweb/news49/275949.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联