场景:根据不同类型实现不同内容脱敏

如:手机号,身份证,地址等

public enum EnumUtils {
    /**
     * 用户名value
     */
    USERNAME{
        @Override
        public String apply(String value) {
            return value.replaceAll("(\\S)\\S(\\S*)", "$1*$2");
        }
    },
    /**
     * 证件号(待定正则)
     */
    ID_CARD{
        @Override
        public String apply(String value) {
            return value.replaceAll("(\\d{4})\\d{2,15}(\\w{4})", "$1****$2");
        }
    },
    /**
     * 手机号
     */
    PHONE{
        @Override
        public String apply(String value) {
            return value.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        }
    },
    /**
     * 地址
     */
    ADDRESS{
        @Override
        public String apply(String value) {
            return value.replaceAll("(\\S{3})\\S{2}(\\S*)\\S{2}", "$1****$2****");
        }
    };

    public abstract String apply(String value);
}

调用直接:

类名.枚举.apply(参数);


同时也省去了if-else判断