策略枚举的用法一:状态流转

本文介绍了如何利用策略枚举进行状态流转的管理,通过将状态和操作结合,实现流程图的代码化。通过获取原始状态和当前请求操作,可以方便地控制和跟踪状态变化,简化开发过程。
摘要由CSDN通过智能技术生成

策略枚举的用法一:状态流转

说明

本文只对策略枚举可以使用的场景进行说明,不做其他介绍。提供额外的实现思路。

状态流转

在开发过程中,难免会遇到状态之间的流转,如何方便维护并且能够一目了然的知道状态之间的流转呢?
例如:
在这里插入图片描述
上图可以看出,我们有状态组:黄色框的内容;操作组:连接线上的内容。
就可以使用一个状态枚举来包装

package com.strategy.enums;

/**
 * 单据状态
 */
public enum StatusEnum {
   

    /** 已提报 */
    HAD_CREATE(1, "已新建"),

    /** 已提报 */
    HAD_SUBMIT(2, "已提报") ,

    /** 已审核" */
    HAD_AUDIT(3, "已审核") ,

    /** 已退回 */
    HAD_BACK(4, "已退回"),

    /** 已拒绝 */
    HAD_REJECT(5, "已拒绝"),

    /** 已生成结算 */
    HAD_USE(6, "已生成结算"),

    /** 已关闭 */
    HAD_CLOSE(7, "已关闭");
    
    /** 枚举值 */
    private int index;

    /** 枚举描述 */
    private String name;

    StatusEnum(int index, String name) {
   
        this.index = index;
        this.name = name;
    }

    public int getIndex() {
   
        return index;
    }

    public String getName() {
   
        return name;
    }

}

如何改造成策略枚举呢,加上操作(方法)与绑定(重写)。

package com.strategy.enums;

/**
 * 单据状态
 */
public enum StatusEnum {
   

    /** 已提报 */
    HAD_CREATE(1, "已新建") {
   
        @Override
        public StatusEnum create() {
   
            return HAD_CREATE;
        }
        @Override
        public StatusEnum save() {
   
            return HAD_CREATE;
        }
        @Override
        public StatusEnum submit() {
   
            return HAD_SUBMIT;
        }
        @Override
        public StatusEnum close() {
   
            return HAD_CLOSE;
        }
    },

    /** 已提报 */
    HAD_SUBMIT(2, "已提报") {
   
        @Override
        public StatusEnum pass() {
   
            return HAD_AUDIT;
        }
        @Override
        public StatusEnum back(</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值