我是靠谱客的博主 机智小馒头,最近开发中收集的这篇文章主要介绍Java技巧-简单状态机编写,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

最近项目中需要对上传的接口进行顺序上传和步骤记录,所以这里编写一个状态机用例。

实战

public class StatusMachine {
	//重点1:状态值是固定的写法
    @Retention(RetentionPolicy.SOURCE)
    public @interface Satus{
         int STEP1 = 0x000001;
         int STEP2 = 0x000002;
         int STEP3 = 0x000004;
         int STEP4 = 0x000008;
         int STEP5 = 0x000010;
         int STEP6 = 0x000020;
         int STEP7 = 0x000040;
         int STEP8 = 0x000080;
         ....
    }

    private int status;


    /**
     *
     * 是否有此状态
     *
     * @param value 保存当前状态
     */
    private boolean hase(int value) {
       return (status & value) != 0;
    }

    /**
     * 移除一个状态
     *
     * @param value
     */
    private void remove(int value) {
        status &= ~value;
    }

    /**
     * 存储状态
     * @param value
     */
    private void add(int value) {
        status |= value;
    }

    /**
     * 清楚当前状态
     */
    private void clear(){
        status = 0;
    }

    public static void main(String[] args)
    {

        StatusMachine statusMachine =  new StatusMachine();
        //add
        statusMachine.add(Satus.STEP1);
        statusMachine.add(Satus.STEP2);
        //remove
        statusMachine.remove(Satus.STEP1);
        //query
        System.out.println("Step1 has:"+statusMachine.hase(Satus.STEP1));
        System.out.println("Step2 has:"+statusMachine.hase(Satus.STEP2));
    }
}

在这里插入图片描述
1.注意状态值的编写,状态从1248依次重复进位添加。
2.状态方法为增删查,使用语言计算符号进行计算判断。

用例

需求
假如我们有一个后台常驻服务用于循环执行任务。记录每一个执行过的步骤,若中途中断,下次任务循环不执行当前进度中所执行的任务。

main{
	while (true) {
            if (!statusMachine.hase(Status.STEP1)) {
                //do step1....
                statusMachine.add(Status.STEP1);
            }
            if (!statusMachine.hase(Status.STEP2)) {
                //do step2....
                statusMachine.add(Status.STEP2);
            }
            //...
            if (!statusMachine.hase(Status.FINISH)){
            	statusMachine.clear();
                break;
            }
        }
}

最后

以上就是机智小馒头为你收集整理的Java技巧-简单状态机编写的全部内容,希望文章能够帮你解决Java技巧-简单状态机编写所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部