状态机适用场景:

C的操作,需要等到A、B的两个操作(A、B顺序操作),那就需要在 A、B之间创建一个状态机(state machine),C的操作需要状态机达到某一个状态才能进行

1. Overview

java版的状态机的原理其实就是java中的枚举类Enum,所以在进行状态机设计之前,先学习一下(回顾一个java Enum)

2. Java Enums

一个简单的例子:员工请假系统,员工到HR那离(submitted)-> 部门领导(Escalated) -> 部门经理(Approved)

public enumLeaveRequestState {

Submitted,

Escalated,

Approved

}

我们可以这样引用:

LeaveRequestState state = LeaveRequestState.Submitted;

java的枚举也可以包含方法,我们可以在枚举类中写一个抽象方法(abstract),这样枚举类中的每个成员都会继承该方法,这个就是java版状态机的核心所在

public enumLeaveRequestState {

Submitted {

@OverridepublicString responsiblePerson() {return "Employee";

}

},

Escalated {

@OverridepublicString responsiblePerson() {return "Team Leader";

}<

状态机 java_java版的状态机实现相关推荐

  1. java多状态机_一个java状态机样例的代码

    在UML当中有状态机视图,这个状态机可以用于自动售货机,自动售票机等等场景,下面是用java代码模拟的一个状态机: 1.状态机接口 package stateMachine; /** * 状态机接口 ...

  2. 管理订单状态,该上状态机吗?轻量级状态机COLA StateMachine保姆级入门教程

    前言 在平常的后端项目开发中,状态机模式的使用其实没有大家想象中那么常见,笔者之前由于不在电商领域工作,很少在业务代码中用状态机来管理各种状态,一般都是手动get/set状态值.去年笔者进入了电商领域 ...

  3. QP状态机框架与常见状态机方法

    原文链接:嵌入式状态机编程-QP状态机框架与常见状态机方法 状态机基本术语 现态:是指当前所处的状态. 条件:又称为"事件",当一个条件被满足,将会触发一个动作,或者执行一次状态的 ...

  4. android 状态机的作用,Android 状态机、状态模式 基础框架实现

    一.StateMachine 要解决的问题 从设计模式的角度来讲,状态模式和策略模式类图是一样的,所以工作原理也类似.但相比较于策略模式,状态模式需要管理好状态树,以及维护状态对象的生命周期. 所以, ...

  5. 飞狐的日线 java_JAVA 版 ATX-Client

    背景 由于我们这边正在进行 app 自动化工具选型,目前暂定选用 macaca,但 macaca 存在没有无线测试连接方案,后来在论坛上看到 @codeskyblue 开源的 atx-agent 方案 ...

  6. atx860和java_JAVA 版 ATX-Client

    背景 由于我们这边正在进行 app 自动化工具选型,目前暂定选用 macaca,但 macaca 存在没有无线测试连接方案,后来在论坛上看到 @codeskyblue 开源的 atx-agent 方案 ...

  7. 飞机大战java_java版飞机大战实战项目详细步骤

    本文为大家分享了java版飞机大战实战项目,供大家参考,具体内容如下 分析 飞机大战 首先对这个游戏分析,在屏幕上的物体都是飞行物,我们可以把建一个类,让其他飞行物继承这个类.游戏中应有英雄机(也就是 ...

  8. nc要用多少版本的java_java版简易 nc

    实现一个Java版的简易nc,用于方便windows上spark streaming的socketTextStream 的测试 界面如下 运行方式 有两种: 不添加端口号参数,直接运行的话,默认监听9 ...

  9. 坦克大战java_java版坦克大战游戏源码

    [java]代码库package tankwar; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; imp ...

最新文章

  1. 离人类更近一步!DeepMind最新Nature论文:AI会“回忆”,掌握调取记忆新姿势
  2. The Constructor with No Arguments
  3. 图的m着色问题pascal程序
  4. python中坐标怎么表示_如何在Python中以像素表示(有限)平面上的坐标
  5. Linux日志查找技巧
  6. Netty的队列有何不一样
  7. 计蒜客蓝桥杯模拟赛5 引爆炸弹【并查集】
  8. 4.11 一维到三维推广
  9. SpringCloud工作笔记060---SpringBoot中使用WebSocket实现即时通讯_实现呼叫中心业务封装
  10. pb dw graph增加series_如何快速增加tiktok视频的播放量
  11. H5 data-* 属性,设置获取方法总结
  12. linux 使用秘钥认证,linux 密钥验证登录
  13. C#逆向反编译工具:JetBrains dotPeek
  14. 2019 google开发者大会 | tensorflow相关视频
  15. docker之网络管理
  16. Xamarin Mono For Android
  17. 爬取百度地图,获取城市楼盘信息
  18. worksheet怎么读_worksheet是什么意思_worksheet的翻译_音标_读音_用法_例句_爱词霸在线词典...
  19. 用 python 快速「卡通化」人物头像
  20. 带你了解CPU的世界

热门文章

  1. Delaunay三角网之逐点插入法(优化版本一)
  2. 如何用visio绘制交通图?
  3. 强大视频分割软件:Boilsoft Video Splitter 7.01.1绿色便携版
  4. 织梦模板有电商功能吗?
  5. 3.6 高速缓冲存储器
  6. python基础学习笔记-day4
  7. equals()和hashCode()区别?
  8. element-ui中switch开关回显问题
  9. cubase5 安装错误
  10. 六十二、Azkaban使用示例