V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hekailiang
V2EX  ›  Java

[开源项目]轻量级Java有限状态机 Squirrel State Machine

  •  
  •   hekailiang ·
    hekailiang · 2014-01-19 10:07:21 +08:00 · 12066 次点击
    这是一个创建于 3967 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Squirrel State Machine 是基于Java的有限状态机的实现。主要实现功能包括:

    - 提供友好的API来构建状态机
    - 提供基于注释声明状态机
    - 事件驱动的状态转移
    - 支持异步动作执行与异步事件派发
    - 状态机自诊断
    - 状态机导出SCXML,DOT文件

    欢迎star && fork:
    https://github.com/hekailiang/squirrel
    5 条回复    1970-01-01 08:00:00 +08:00
    kalman03
        1
    kalman03  
       2014-01-19 21:48:39 +08:00
    不错
    Tankpt
        2
    Tankpt  
       2014-01-20 09:08:43 +08:00
    昨天晚上也刚好看到一个状态机的想目,小白想问下这个东西在哪些地方有用的?
    我只记得本科在学电路中硬件编程中会用到这个,不知其他方面呢?希望指点下
    hekailiang
        3
    hekailiang  
    OP
       2014-01-20 09:26:37 +08:00
    @Tankpt 所谓状态机简单来说就是管理程序执行时刻的上下文(或者说是内部状态)。一般在代码逻辑还不是很复杂的时候我们会使用if-elseif-else来管理这些执行状态,但随着需求不断变化,代码内部状态越来越复杂,会出现if-else深层嵌套,if-else的判断条件复杂难懂,这样造成代码的扩展性和可以维护性急剧下降。一般出现这种情况时可以考虑使用状态机来优化实现。常用的场景有游戏控制器,词法分析器,执行单元控制器等等。
    Tankpt
        4
    Tankpt  
       2014-01-20 12:44:14 +08:00
    @hekailiang 嗯嗯,明白了。突然想起来之前编译原理里貌似学过的。。突然想起来好多,哈哈
    julyclyde
        5
    julyclyde  
       2014-01-21 22:48:59 +08:00 via iPad
    查表法代替if
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1121 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 230ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.