场景1:状态/类型定义

public class Main {

    public enum OrderStatus {
        PENDING_PAYMENT(0, "待支付"),
        PAID(1, "已支付"),
        SHIPPED(2, "已发货"),
        COMPLETED(3, "已完成"),
        CANCELLED(4, "已取消");

        private final int code;
        private final String description;

        OrderStatus(int code, String description) {
            this.code = code;
            this.description = description;
        }

        public int getCode() { return code; }
        public String getDescription() { return description; }
    }

    public static void main(String[] args) {
        System.out.println("========== 场景1:状态/类型定义 ==========");
        OrderStatus status = OrderStatus.PAID;
        System.out.println("订单状态码:" + status.getCode());
        System.out.println("订单状态描述:" + status.getDescription());
        
        System.out.println("\n状态流转:");
        OrderStatus current = OrderStatus.PENDING_PAYMENT;
        System.out.println("当前:" + current.getDescription());
        current = OrderStatus.PAID;
        System.out.println("支付后:" + current.getDescription());
        current = OrderStatus.SHIPPED;
        System.out.println("发货后:" + current.getDescription());
    }
}

场景2:策略模式

public class Main {

    public enum Calculator {
        ADD {
            @Override
            public int apply(int a, int b) { return a + b; }
        },
        SUBTRACT {
            @Override
            public int apply(int a, int b) { return a - b; }
        },
        MULTIPLY {
            @Override
            public int apply(int a, int b) { return a * b; }
        },
        DIVIDE {
            @Override
            public int apply(int a, int b) { return a / b; }
        };

        public abstract int apply(int a, int b);
    }

    public static void main(String[] args) {
        System.out.println("========== 场景2:策略模式(替换 if/else)==========");
        int a = 10, b = 5;
        System.out.println("10 + 5 = " + Calculator.ADD.apply(a, b));
        System.out.println("10 - 5 = " + Calculator.SUBTRACT.apply(a, b));
        System.out.println("10 × 5 = " + Calculator.MULTIPLY.apply(a, b));
        System.out.println("10 ÷ 5 = " + Calculator.DIVIDE.apply(a, b));
        
        String operator = "MULTIPLY";
        int result = Calculator.valueOf(operator).apply(a, b);
        System.out.println("\n动态调用 " + operator + " 结果:" + result);
    }
}

场景3:统一返回码

public class Main {

    public enum ResultCode {
        SUCCESS(200, "操作成功"),
        BAD_REQUEST(400, "请求参数错误"),
        UNAUTHORIZED(401, "未登录或登录已过期"),
        FORBIDDEN(403, "无权限访问"),
        NOT_FOUND(404, "资源不存在"),
        INTERNAL_ERROR(500, "服务器内部错误");

        private final int code;
        private final String message;

        ResultCode(int code, String message) {
            this.code = code;
            this.message = message;
        }

        public int getCode() { return code; }
        public String getMessage() { return message; }
    }

    public static class ApiResponse<T> {
        private int code;
        private String message;
        private T data;

        public ApiResponse(ResultCode resultCode, T data) {
            this.code = resultCode.getCode();
            this.message = resultCode.getMessage();
            this.data = data;
        }

        public static <T> ApiResponse<T> success(T data) {
            return new ApiResponse<>(ResultCode.SUCCESS, data);
        }

        public static <T> ApiResponse<T> error(ResultCode resultCode, T data) {
            return new ApiResponse<>(resultCode, data);
        }

        public static <T> ApiResponse<T> error(ResultCode resultCode) {
            return new ApiResponse<>(resultCode, null);
        }

        public int getCode() { return code; }
        public String getMessage() { return message; }
        public T getData() { return data; }

        @Override
        public String toString() {
            return "{\"code\":" + code + ",\"message\":\"" + message + "\",\"data\":" + data + "}";
        }
    }

    public static void main(String[] args) {
        System.out.println("========== 场景3:统一返回码(后端接口必备)==========");
        ApiResponse<String> successResp = ApiResponse.success("用户信息获取成功");
        ApiResponse<String> errorResp = ApiResponse.error(ResultCode.NOT_FOUND);
        
        System.out.println("成功响应:" + successResp);
        System.out.println("失败响应:" + errorResp);
        
        System.out.println("\n所有返回码定义:");
        for (ResultCode code : ResultCode.values()) {
            System.out.println("  " + code.getCode() + " -> " + code.getMessage());
        }
    }
}

更多推荐