[开源项目]轻量级Java有限状态机 Squirrel State Machine - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hekailiang
V2EX    Java

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

  •  
  •   hekailiang
    hekailiang 2014-01-19 10:07:21 +08:00 12667 次点击
    这是一个创建于 4363 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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     Solana     5669 人在线   最高记录 6679   &bsp;   Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 03:32 PVG 11:32 LAX 19:32 JFK 22:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86