龙空技术网

把相似的枚举放到一个接口里进行归类,让代码更优雅

架构师风吹哨 189

前言:

此刻姐妹们对“枚举 数据库”都比较关心,你们都需要学习一些“枚举 数据库”的相关知识。那么小编在网上收集了一些有关“枚举 数据库””的相关文章,希望大家能喜欢,朋友们一起来了解一下吧!

我发现很多人在定义枚举的时候都是平铺,一个枚举一个类,枚举多的时候就变得很混乱,可读性很低,每次查找枚举很费时间。

枚举归类

其实枚举是可以归类的,把相似的枚举放在一个枚举类里。我习惯把枚举数据库表做对应,就像表和实体bean的对应关系一样,一张表一个枚举类。

枚举大类是个接口interface,然后在interface里定义具体枚举。

public interface OrderEnums {    enum TaskStatus {        NU_ROLLBACK(0),        ROLLBACK_ING(1),        ROLLBACK_SUC(2);        private final Integer code;        TaskStatus(Integer code) {            this.code = code;        }        public Integer getCode() {            return code;        }    }    enum BizCode {        SP("sp", "single payment"),        TP("tp", "single payment query order");        BizCode(String code, String description) {            this.code = code;            this.description = description;        }        private String code;        private String description;        public String getCode() {            return code;        }        public String getDescription() {            return description;        }    }  //... ...}

OrderEnums接口名称,内部的TaskStatus,BizCode属于具体的枚举类名,在调用的时候,直接就是OrderEnums.TaskStatus.getCode()就可以了。

枚举内部逻辑处理

枚举定义完成之后,要参与业务逻辑,比如获取枚举集合,比较值,根据枚举值获取枚举之类的操作,这些操作都可以在枚举类内部完成,这样可以职责和逻辑更单一。

enum BizCode {        SP("sp", "single payment"),        TP("tp", "single payment query order");        private String code;        private String description;  			//根据code值获取枚举对象  			public static BizCode get(String code) {            if (Objects.isNull(code)) {                return null;            }            for (BizCode i : values()) {                if (i.getCode().equals(code)) {                    return i;                }            }            return null;        }      	//获取枚举list    	public static List<String> getListCode() {            List<String> list = new ArrayList<>();            list.add(SP.getCode());            return list;        }          public String getCode() {            return code;        }        public String getDescription() {            return description;        }    }

标签: #枚举 数据库