【Result类】(使用/不使用<T> data的情况);自带静态方法、纯数据类;

使用枚举类

架构的本质之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 类
  • 适合团队协作
    • 职责清晰,新人容易理解,便于代码审查

缺点

  • 文件数量增加
    • 需要维护两个文件
    • 小型项目可能显得过度设计
相关推荐
唐青枫16 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马18 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户37215742613518 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户37215742613518 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454751 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜2 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫2 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq2 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮2 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js