前景
以前做 php 的时候,因为自己的代码修养不够,导致一个项目开发完成之后,出现一个很坑爹的问题,就是有很多魔术数字,比如用户的状态:正常 1 冻结 2 删除 3 整套项目下来 如果很多地方都会调用到的话,一旦出现这些枚举值要进行改动的场景,那简直是一场灾难,甚至枚举类的重要性!
创建枚举接口
这个借口创建之后,其他各种类型的枚举会去实现接口
package com.center.common.enumtype;
/**
* 枚举基类.
*/
public interface BaseEnum {
/**
* 获取描述
* @return
*/
String getDesc();
/**
* 获取编码值(数据库存的)
* @return
*/
Byte getCode();
}
创建数字类型的枚举类
整型的数字,字符串的数字,长整型的数字
这个主要用在一些判断结果值之类的场景
package com.center.common.enumtype;
/**
* 枚举
* @author javashishijieshangzuihaodeyuyan
*/
public class Constants {
public interface Ints {
Integer MINUS_ONE = -1;
Integer ZERO = 0;
Integer ONE = 1;
Integer TWO = 2;
Integer THREE = 3;
Integer FOUR = 4;
Integer FIVE = 5;
Integer SIX = 6;
Integer SEVEN = 7;
Integer TEN = 10;
}
public interface Strings {
String ZERO = "0";
String ONE = "1";
String TWO = "2";
String THREE = "3";
String FOUR = "4";
String HUNDRED="100";
String TEN = "10";
}
public interface Longs {
Long ZERO = 0L;
Long ONE = 1L;
Long TWO = 2L;
Long THREE = 3L;
Long FOUR = 4L;
Long FIVE = 5L;
Long SIX = 6L;
Long SEVEN = 7L;
Long TEN = 10L;
}
}
使用示范
# 读取的值 是整型的数字5
Constants.Ints.FIVE
映射数据库的一些 tinyint
类型字段的枚举
比如订单类型:0代表提现订单,1充值订单,2通道订单
package com.center.common.enumtype;
/**
* Description:订单类型 0用户订单1测试订单2正式订单
*
*/
public enum OrderTypeEnum implements BaseEnum {
CASHOUT((byte)0, "用户订单"),
RECHARGE((byte)1, "测试订单"),
CHANNEL((byte)2, "正式订单");
private byte code;
private String desc;
OrderTypeEnum(byte code, String desc) {
this.code = code;
this.desc = desc;
}
@Override
public String getDesc() {
return this.desc;
}
@Override
public Byte getCode() {
return this.code;
}
}
使用示范
# 获取 数字 如:1
OrderTypeEnum.CASHOUT.getCode()
# 获取描述 如:测试订单
OrderTypeEnum.CASHOUT.getDesc()
缓存常量枚举
这个是给 redis 读 key 的时候使用,不然每个地方都去写死字符串,
要改动的话,直接当场去世!
package com.pay.common;
/**
* 缓存常量
*/
public interface CacheKeyContants {
String IMG_CODE = "IMG_CODE";
String SESSION_USER = "SESSION_USER";
// 库
int DATABASE = 0;
int ROB_DATABASE = 1;
// KEY
String KEY_ROB_USER= "KEY_ROB_USER";
String KEY_FUUID= "fuuid";
//时间
// 分钟
int ONE_MINUTE = 60;
//一周
int ONE_WEEK = 86400 * 7;
// 一天
int ONE_DAY = 86400;
// 一小时
int ONE_HOUR = 3600;
// 五分钟
int FIVE_MINUTES = 300;
//key
}
使用示范
#读取value
CacheKeyContants.ROB_DATABASE
大致的枚举就可以按照第二个如法炮制
通过这样处理,整个项目的一些值清晰易懂,想改动也只需要改动一个地方!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于