使用枚举类
架构的本质之MVC架构 ------ Java简明教程,一套简单、清晰、明了的Java学习路线资料!!!_哔哩哔哩_bilibili
18:00
定义的枚举类
不过这个up是在常量类中,定义了枚举的内部类

Result类使用枚举类

不使用<T> data
Result没有用<T> data
他定义了一个res类,封装了Result和返回的voList

两种设计模式
自带静态方法
java
@Data
public class Result<T> implements Serializable {
private Integer code;
private String msg;
private T data;
public static <T> Result<T> success() { ... }
public static <T> Result<T> success(T data) { ... }
public static <T> Result<T> error(String msg) { ... }
public static <T> Result<T> error(Integer code, String msg) { ... }
}
使用:
java
@GetMapping("/teacher")
public Result<JSONObject> getTeacherInfo() {
JSONObject result = sbsInfoService.getTeacherInfo();
return Result.success(result); // 直接调用 Result 的静态方法
}
优点
-
使用简洁
-
文件少,维护方便
- 所有相关代码在一个文件中
- 不需要在两个文件之间跳转
-
适合小型项目
- 项目规模小,不需要复杂的扩展
- 团队成员少,代码风格统一
缺点
- 违反单一职责原则(SRP)
- Result 类既承担数据传输对象(DTO)的职责
- 又承担工厂方法的职责
- 扩展性受限
- 每次添加新的响应类型都需要修改 Result 类
- 不符合开闭原则(对扩展开放,对修改关闭)
Result 纯数据类 + ResultUtils 工具类
java
// 纯数据类
// Result.java
@Data
public class Result<T> {
private int code;
private String message;
private T data;
}
// 独立的工具类
// ResultUtils.java
public final class ResultUtils {
public static <T> Result<T> success() { ... }
public static <T> Result<T> success(T data) { ... }
public static <T> Result<T> error(...) { ... }
}
使用:
java
@GetMapping("/list")
public Result<List<FriendVO>> findFriends() {
return ResultUtils.success(friendService.findFriends()); // 调用工具类方法
}
优点
- 符合单一职责原则
- Result 只负责数据结构定义
- ResultUtils 只负责对象创建
- 更好的扩展性
- 可以轻松添加新的工具方法,不影响 Result 类
- 适合团队协作
- 职责清晰,新人容易理解,便于代码审查
缺点
- 文件数量增加
- 需要维护两个文件
- 小型项目可能显得过度设计