走了一些弯路 2023-02-16 10:14 采纳率: 50%
浏览 18

状态机结合责任链模式的实际落地场景

目前项目中业务比较复杂,主要定位是一个众包的接单平台,复杂点如下

  1.业务流程分支较多
  2.业务状态较多,且业务状态转换也很频繁

为了业务语义的清晰及业务逻辑的解耦,目前在做的方向包括


- 使用状态机来进行状态管理

- 使用基于配置的责任链模式对业务流程进行编排,便于复用、流程清晰

问题:想在责任链的配置节点中包含状态机的状态转换,不知道大家有没有落地的场景,考虑到状态机需要设计为无状态,要不有并发问题,不知道有没有什么坑,另外项目中有些状态转换简单,是否使用这种模式过于繁琐

  • 写回答

1条回答 默认 最新

  • 量化研究所 2023-02-16 10:20
    关注

    在你所描述的场景中,使用状态机来管理业务状态是一个不错的选择,可以提高业务语义的清晰性和可维护性。关于状态机的无状态设计,确实是为了避免并发问题,同时也可以方便进行状态迁移的测试和扩展。状态机的实现有多种方式,可以使用面向对象的方式,也可以使用函数式的方式来实现。

    在责任链模式中包含状态机的状态转换是可以考虑的,可以将状态机的状态转换作为责任链模式的一个节点,以此来达到业务流程的编排。但是,这种方式的实现可能会增加一定的复杂度,需要仔细考虑状态机和责任链模式的交互。同时,对于简单的状态转换,可以考虑直接在业务逻辑中实现,避免过度的繁琐。

    总之,对于复杂的业务流程,使用状态机和责任链模式来管理业务状态和流程是一种可行的方案,但需要根据具体场景进行评估和设计。在实现过程中,需要注意状态机的无状态设计,以及责任链模式和状态机之间的交互。

    望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月16日

悬赏问题

  • ¥15 关于LT3758反激式负压电源,功率三极管烧毁的问题
  • ¥20 aruba ap305 CAP转IAP
  • ¥20 rockchip rk3588 ffmedia运行异常
  • ¥30 如何用 Java 简单系统设计?(相关搜索:服务器|面向对象设计|随机数)
  • ¥15 鸿蒙开发(关键词-开发环境)
  • ¥15 错误使用 mex Embedding metadata in the MEX file failed.
  • ¥30 Fractal eXtreme 64-bit求解锁15天限制
  • ¥30 openvpn 启动错误
  • ¥15 有偿解决脑电仪导出数据edf时出现报错,有偿
  • ¥15 关于下载R包”org.Hs.eg.db“的时候,遇到了could not find function "file.edit"的问题!