`
Saito
  • 浏览: 43850 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

非Java style且没什么用的Java有限状态机.

阅读更多
STATEMACHINE
============

an useless library for refactor ur messy if/else business logic.

source: =>github<=



Requirements
------------

* Java 6

Mini DSL
--------



State start = new State("start");
start.enter = new Signal(String.class).add(callee, true, "beep", "<============= start enter helloWorld ===============>");
start.exec = new Signal(String.class).add(callee, true, "beep", "<============= i am in start state ===============>");
start.to("service").when("a > 5");
start.to("task").when("a <= 5");
// new service state
State service = new State("service");
service.to("end");
// add enter and exit signal
service.enter = new Signal(String.class).add(callee, true, "beep", "<============= service enter helloWorld ===============>");
service.exec = new Signal(String.class).add(callee, true, "beep", "<============= i am in service state ===============>");
service.exit = new Signal(String.class).add(callee, true, "beep", "<============= service exit byeWorld ===============>");
// new task state
State task = new State("task");
task.enter = new Signal(String.class).add(callee, false, "beep", "<============= task enter helloWorld ===============>");
task.to("end");
// new end state
State end = new State("end");
end.exec = new Signal(String.class).add(callee, true, "beep", "<============= i am in end state ===============>");



Dot Support
-----------

Graphviz is open source graph visualization software.

#### install grapviz

on ubuntu or debian:

   
apt-get install graphviz


others:

   
http://www.graphviz.org/Download..php


#### gen dot file

   
javac im.saito.Helper.java
java im.saito.Helper


#### gen dot image

   
dot -Tpng your/path/to/im/saito/Helper/fsm.dot > /your/path/to/fsm.png


wow:



Javascript Interpreter
----------------------

* use it in Transition class / when method,true or false?

Running Statemachine
--------------------

exec the src/example Main to run a statemachine.

Architecture Overview
---------------------

Statemachine is organized into two parts: a state machine and a java signals which is inspired by as3signals.each state has three inject point.(enter exec exit)u can use it do anything u want with signals.

Tips
----

* Statemachine is not a "java like" java library. if u dont like this style. u can change it by urself.

Author
------------

* Saito Wu <saitowu#gmail.com>

License
-------

Statemachine is licensed under the MIT License. (See LICENSE)
分享到:
评论

相关推荐

    java实现有限状态机

    用java语言实现有限状态机,这个简单地实例能全面地诠释状态机的思想

    有限状态机的java例子

    用java编写的一个有限状态机的小程序,模拟一个机器人的活动。

    java枚举状态机

    Java枚举(Enum)状态机是一种使用枚举类型来实现状态转换逻辑的编程技术,它在Java编程中被广泛应用于管理对象的状态变化。状态机是一种模型,用于描述一个系统或对象在不同时间点可能存在的状态以及如何从一个状态...

    Java开发技术大全(500个源代码).

    代码范例列表 第1章 ... useArray2.java 用反射机制使用数组示例2 第10章 示例描述:本章学习泛型。 demoBounds.java 演示有界类型 demoForceChange.java 演示强制类型转换 demoGeneric.java ...

    java.lang.UnsupportedClassVersionError Bad version number in .class file异常的解决办法

    在使用MyEclipse进行Java开发的过程中,可能会遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`这样的错误提示。这种错误通常发生在编译器版本与实际使用的JVM版本不匹配的情况下...

    java编码规范-《The Elements of Java Style》翻译本

    《The Elements of Java Style》是一本权威的Java编码风格指南,旨在帮助开发者编写出高质量的Java代码。以下是对这本书中核心知识点的简要概括: 1. **命名规则**:在Java编程中,变量、方法和类的命名应该清晰、...

    【IT十八掌徐培成】Java基础第09天-004.多线程-状态机变换.zip

    本课程由知名IT讲师徐培成主讲,聚焦Java基础的第09天,主题为“多线程状态机变换”。通过学习这部分内容,开发者能够深入理解Java中的线程管理和调度机制。 Java中的多线程提供了程序并发执行的能力,使得多个任务...

    selenium-java-2.47.1.zip

    这个版本在当时是一个稳定且广泛使用的版本,它提供了丰富的API,支持多种浏览器,并且可以与各种测试框架如JUnit、TestNG等集成。 Selenium 的核心组件包括 WebDriver 和 Selenium RC。WebDriver 是一个接口,允许...

    Google Java Style-en.rar

    《Google Java Style-en.rar》是关于Google制定的Java编程风格指南的英文版资源,它包含了Google对于Java编程的一系列规范和最佳实践。这份指南旨在提高代码的可读性、一致性和可维护性,使得开发团队能够更高效地...

    java runtime 最新版 1.8.0.271

    Java Runtime Environment(JRE)是运行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java程序运行的组件。最新版"1.8.0.271"是Oracle公司发布的Java SE 8的一个更新版本,主要用于...

    一个java状态机样例的代码

    在这个Java实现的状态机样例中,我们将深入探讨如何使用Java来构建一个灵活、可扩展的状态机,并将其应用于实际场景,如自动售货机或自动售票机。 首先,我们需要理解状态机的基本概念。状态机由一系列状态(State...

    msjava.dll 完整版

    4. **系统还原**: 如果msjava.dll文件出现问题,可以尝试使用系统还原功能,将系统状态恢复到出现问题之前的时间点。 5. **使用DLL修复工具**: 可以使用专门的DLL修复工具,如DLL Downloader,来自动检测并解决ms...

    三国志 java 源码.rar

    7. AI算法:游戏中的智能行为,如AI武将的决策,可能使用了搜索算法(如A*算法)、行为树或者状态机等。 8. 资源管理:音频、图像等资源的加载和释放是游戏性能优化的关键。Java源码会包含资源加载器,以高效的方式...

    google-java-styleguide-zh

    2. 测试应独立且可重复,避免依赖外部状态。 3. 使用Mock框架模拟依赖,确保测试的隔离性。 九、持续集成与代码审查 1. 鼓励团队使用持续集成工具,及时发现和修复问题。 2. 实施代码审查制度,通过同行评审提高...

    Java自定义接口状态码.zip

    在Java编程中,自定义接口状态码是一种常见的做法,它有助于提高代码的可读性和维护性,同时也使得系统之间的通信更加清晰。接口状态码通常用于表示一个请求的处理结果,可以是成功、错误或者特定业务状态。下面我们...

    三星手机安装JAVA方法.doc

    然而,在早期的非智能机时代,JAVA应用程序是许多用户的重要娱乐来源之一。三星作为全球知名的手机制造商,其生产的部分型号手机支持安装JAVA应用。本文将详细介绍三星手机安装JAVA应用程序的方法,帮助用户轻松安装...

    java swing用Logger输出错误日志.docx

    在Java编程中,日志记录是一项非常重要的任务,它帮助开发者追踪程序运行状态,调试问题,以及记录系统事件。在Swing应用中,我们同样可以使用Java内置的`java.util.logging`包来输出错误日志。这篇文档主要讨论了...

    Core Java(Volume II--Advanced Features 9th Edition).pdf

    6. **Java序列化**:Java序列化用于将对象状态转化为字节流,便于存储和网络传输。书中讨论了如何实现Serializable接口,序列化和反序列化过程,以及自定义序列化行为。 7. **异常处理**:Java的异常处理机制是其...

    Java 服务器信息监控

    本文将详细探讨使用Java实现的服务器监控程序,以及如何利用它来监控CPU、内存、网络连接和服务状态。 Java作为一种跨平台的语言,为开发服务器监控工具提供了便利。在"Java 服务器信息监控"项目中,开发者可以编写...

    javaReport.zip

    9. **日志记录**:如何使用如Log4j或SLF4J记录程序运行状态,方便调试和问题排查。 10. **单元测试**:确保代码质量,如使用JUnit进行功能验证。 11. **Maven或Gradle**:构建工具,用于管理项目依赖和构建JAR文件。...

Global site tag (gtag.js) - Google Analytics