场景 1:状态 / 类型定义
/**
- 作业3-场景1:枚举-状态定义 订单状态
*/
enum OrderStatus {
UNPAID, // 未支付
PAID, // 已支付
DELIVERED, // 已发货
FINISH, // 已完成
CANCEL // 已取消
}
class OrderTest {
public static void main(String[] args) {
OrderStatus status = OrderStatus.PAID;
switch (status) {
case UNPAID -> System.out.println("待用户付款");
case PAID -> System.out.println("准备发货");
case DELIVERED -> System.out.println("运输中");
case FINISH -> System.out.println("交易结束");
case CANCEL -> System.out.println("订单关闭");
}
}
}
场景 2:策略模式,消除大量 if-else
/**
- 作业3-场景2:枚举策略模式 替代if/else 四则运算
*/
interface Calculate {
int calc(int a, int b);
}
enum Operator implements Calculate {
ADD("+") {
@Override
public int calc(int a, int b) {
return a + b;
}
},
SUB("-") {
@Override
public int calc(int a, int b) {
return a - b;
}
},
MUL("*") {
@Override
public int calc(int a, int b) {
return a * b;
}
},
DIV("/") {
@Override
public int calc(int a, int b) {
return a / b;
}
};
private final String symbol;
Operator(String symbol) {
this.symbol = symbol;
}
public String getSymbol() {
return symbol;
}
}
class StrategyTest {
public static void main(String[] args) {
int a = 10, b = 5;
for (Operator op : Operator.values()) {
int res = op.calc(a, b);
System.out.printf("%d %s %d = %d%n", a, op.getSymbol(), b, res);
}
}
}
场景 3:后端统一返回码枚举
/**
-
作业3-场景3:枚举统一接口返回码(后端开发必备)
*/
enum ResultCode {
SUCCESS(200, "操作成功"),
FAIL(500, "服务器异常"),
PARAM_ERROR(400, "参数非法"),
UNAUTHORIZED(401, "未登录"),
FORBIDDEN(403, "权限不足");private final int code;
private final String msg;ResultCode(int code, String msg) {
this.code = code;
this.msg = msg;
}// getter
public int getCode() { return code; }
public String getMsg() { return msg; }
}
// 模拟接口返回实体
class Result
private int code;
private String msg;
private T data;
public static
Result
r.code = ResultCode.SUCCESS.getCode();
r.msg = ResultCode.SUCCESS.getMsg();
r.data = data;
return r;
}
public static
Result
r.code = code.getCode();
r.msg = code.getMsg();
return r;
}
@Override
public String toString() {
return "Result{code=" + code + ", msg='" + msg + "', data=" + data + "}";
}
}
class ApiTest {
public static void main(String[] args) {
// 成功返回
System.out.println(Result.ok("用户数据"));
// 参数错误返回
System.out.println(Result.fail(ResultCode.PARAM_ERROR));
}
}