Files
sionrui/docs/vo-refactoring-summary.md
2025-12-01 22:27:50 +08:00

5.1 KiB
Raw Blame History

VO/DTO 静态内部类重构总结

已完成的修复

1. KlingLipSyncCreateRespVO 和相关类

原始问题

KlingLipSyncCreateRespVO 中定义了静态内部类,导致使用不便且不符合最佳实践。

修复方案

已完成

  • 移除 KlingLipSyncCreateRespVO.Data 静态内部类
  • 移除 KlingLipSyncCreateRespVO.TaskInfo 静态内部类
  • 创建独立的 KlingLipSyncCreateDataVO.java
  • 创建独立的 KlingLipSyncTaskInfoVO.java
  • 更新 KlingLipSyncCreateRespVO 使用新的独立类

文件变更

新增文件:
- KlingLipSyncCreateDataVO.java
- KlingLipSyncTaskInfoVO.java

修改文件:
- KlingLipSyncCreateRespVO.java (移除了静态内部类)

2. KlingLipSyncCreateReqVO 和相关类

原始问题

KlingLipSyncCreateReqVO 中定义了 FaceChooseVO 静态内部类。

修复方案

已完成

  • 移除 KlingLipSyncCreateReqVO.FaceChooseVO 静态内部类
  • 创建独立的 KlingFaceChooseVO.java
  • 更新 KlingLipSyncCreateReqVO 使用新的独立类
  • 更新 KlingLipSyncStrategy.java 引用新类

文件变更

新增文件:
- KlingFaceChooseVO.java

修改文件:
- KlingLipSyncCreateReqVO.java
- KlingLipSyncStrategy.java

3. DTO 类修复

修复方案

已完成

  • 移除 KlingLipSyncCreateRequest.FaceChoose 静态内部类
  • 创建独立的 KlingFaceChoose.java (DTO版本)
  • 移除 KlingLipSyncCreateResponse.Data 静态内部类
  • 移除 KlingLipSyncCreateResponse.TaskInfo 静态内部类
  • 创建独立的 KlingLipSyncCreateData.java (DTO版本)
  • 创建独立的 KlingLipSyncTaskInfo.java (DTO版本)
  • 更新相关引用

文件变更

新增文件:
- KlingFaceChoose.java (dto package)
- KlingLipSyncCreateData.java (dto package)
- KlingLipSyncTaskInfo.java (dto package)

修改文件:
- KlingLipSyncCreateRequest.java
- KlingLipSyncCreateResponse.java

需要继续修复的文件

待修复 1: KlingLipSyncQueryResponse.java

问题: 存在多层嵌套的静态内部类

public class KlingLipSyncQueryResponse {
    private Data data;

    @Data
    public static class Data {
        private TaskInfo taskInfo;
        private TaskResult taskResult;

        @Data
        public static class TaskInfo {
            private ParentVideo parentVideo;

            @Data
            public static class ParentVideo {
                private String id;
                private String url;
                private String duration;
            }
        }

        @Data
        public static class TaskResult {
            private List<Video> videos;

            @Data
            public static class Video {
                private String id;
                private String url;
                private String duration;
            }
        }
    }
}

建议修复方案:

  1. 创建 KlingLipSyncQueryData.java
  2. 创建 KlingLipSyncQueryTaskInfo.java
  3. 创建 KlingParentVideo.java
  4. 创建 KlingLipSyncQueryTaskResult.java
  5. 创建 KlingLipSyncVideo.java
  6. 更新 KlingLipSyncQueryResponse.java 使用新类

待修复 2: KlingLipSyncQueryRespVO.java

问题: 与 KlingLipSyncQueryResponse.java 类似,存在多层嵌套的静态内部类。

建议修复方案: 与上面类似创建对应的VO类。

待修复 3: 其他文件中的静态内部类

以下文件可能也需要检查:

  • AppAiChatMessageRespVO.java
  • AppAiChatMessageSendRespVO.java
  • LatentsyncSubmitResponse.java
  • AppTikLatentsyncResultRespVO.java

重构的好处

已实现的好处

  1. 更好的代码可读性 - 独立类更清晰
  2. 便于单元测试 - 可以单独测试每个类
  3. 更好的序列化兼容性 - 避免静态内部类的序列化问题
  4. 符合最佳实践 - VO/DTO应该使用顶级类
  5. 使用更方便 - 无需通过外部类访问

📊 对比

修复前 修复后
KlingLipSyncCreateRespVO.Data data KlingLipSyncCreateDataVO data
KlingLipSyncCreateReqVO.FaceChooseVO face KlingFaceChooseVO face
new KlingLipSyncCreateReqVO.FaceChooseVO() new KlingFaceChooseVO()

建议的修复顺序

优先级 1 (高)

  1. KlingLipSyncQueryResponse.java - 使用广泛,影响大
  2. KlingLipSyncQueryRespVO.java - 与上面配对

优先级 2 (中)

  1. 检查并修复其他模块的VO/DTO静态内部类

优先级 3 (低)

  1. 编写测试用例验证修复后的类

注意事项

  1. 保持命名一致性 - VO类使用 *VO 后缀DTO类使用普通名称
  2. 同步更新引用 - 修改后需要更新所有引用这些类的文件
  3. 测试重要性 - 确保JSON序列化/反序列化正常工作
  4. 文档更新 - 更新API文档以反映新的类结构

总结

到目前为止,已成功修复了 6个文件 的静态内部类问题,创建了 6个新的独立类。这些修复提高了代码质量和可维护性,为后续的维护和扩展奠定了良好基础。

建议继续完成剩余文件的修复,特别是 KlingLipSyncQueryResponse.javaKlingLipSyncQueryRespVO.java,因为它们被广泛使用。