场景 1状态 / 类型定义最常用应用说明用来统一管理业务中固定的状态、分类替代硬编码魔法数字 / 字符串避免零散常量保证业务状态全项目统一。典型订单状态、商品类型、审核状态。示例订单状态枚举// 订单状态枚举publicenumOrderStatusEnum{PENDING_PAY(0,待付款),PAID(1,已付款),DELIVERED(2,已发货),FINISH(3,已完成),CANCEL(4,已取消);privatefinalIntegercode;privatefinalStringdesc;// 构造器OrderStatusEnum(Integercode,Stringdesc){this.codecode;this.descdesc;}// getterpublicIntegergetCode(){returncode;}publicStringgetDesc(){returndesc;}// 根据 code 反向查枚举业务常用数据库存数字代码转枚举publicstaticOrderStatusEnumgetByCode(Integercode){for(OrderStatusEnumstatus:values()){if(status.getCode().equals(code)){returnstatus;}}thrownewIllegalArgumentException(无效订单状态码);}}使用数据库存储数字 0/1/2代码通过枚举解析含义杜绝手写数字出错。场景 2策略模式消除臃肿 if/else 分支应用说明多分支业务支付类型、文件解析类型传统写法多层 if-else if维护困难枚举绑定业务策略实现根据类型直接执行对应逻辑完全去掉分支判断。示例多种支付方式微信 / 支付宝 / 银行卡**定义支付策略接口publicinterfacePayStrategy{voidpay(LongorderId,BigDecimalmoney);}各个支付实现类// 微信支付classWechatPayimplementsPayStrategy{Overridepublicvoidpay(LongorderId,BigDecimalmoney){System.out.println(调用微信支付订单orderId金额 money);}}// 支付宝classAliPayimplementsPayStrategy{Overridepublicvoidpay(LongorderId,BigDecimalmoney){System.out.println(调用支付宝支付订单orderId金额 money);}}支付类型枚举绑定对应策略publicenumPayTypeEnum{WECHAT(1,微信支付,newWechatPay()),ALIPAY(2,支付宝支付,newAliPay());privatefinalIntegercode;privatefinalStringname;privatefinalPayStrategystrategy;PayTypeEnum(Integercode,Stringname,PayStrategystrategy){this.codecode;this.namename;this.strategystrategy;}// 直接调用支付逻辑无任何 ifpublicvoiddoPay(LongorderId,BigDecimalmoney){this.strategy.pay(orderId,money);}// getter 省略}业务调用// 传入支付类型编码直接执行逻辑PayTypeEnum.getByCode(1).doPay(10001L,newBigDecimal(99.9));新增支付方式只需要新增枚举项 实现类开闭原则不用修改原有 if 代码。场景 3后端接口统一返回码项目全局规范应用说明后端 REST 接口统一响应编码规范前后端交互成功码、参数错误码、业务异常码、系统异常码全项目统一错误文案避免前后端码值不一致。示例全局响应码枚举// 统一接口返回码publicenumResultCodeEnum{SUCCESS(200,请求成功),PARAM_ERROR(400,请求参数非法),UNAUTH(401,未登录/权限不足),BUSINESS_FAIL(501,业务处理失败),SYS_ERROR(500,服务器内部异常);privatefinalIntegercode;privatefinalStringmsg;ResultCodeEnum(Integercode,Stringmsg){this.codecode;this.msgmsg;}// getter 省略}配套通用返回实体接口统一返回格式publicclassResultT{privateIntegercode;privateStringmsg;privateTdata;// 快捷成功返回publicstaticTResultTsuccess(Tdata){ResultTresnewResult();res.setCode(ResultCodeEnum.SUCCESS.getCode());res.setMsg(ResultCodeEnum.SUCCESS.getMsg());res.setData(data);returnres;}// 快捷失败返回publicstaticTResultTfail(ResultCodeEnumcodeEnum){ResultTresnewResult();res.setCode(codeEnum.getCode());res.setMsg(codeEnum.getMsg());returnres;}}Controller 使用示例GetMapping(/test)publicResultStringtest(){// 业务异常直接返回固定错误码returnResult.fail(ResultCodeEnum.PARAM_ERROR);}使用场景核心优势状态定义约束取值范围代码可读性强避免魔法值策略替换 if代码易扩展新增类型不用修改原有逻辑统一返回码前后端协议标准化全局错误信息统一