java - 我们应该有类似的 DTO 吗?

标签 java oop dto code-duplication

我有 2 个使用不同的 dto,但它们具有相似的字段。例如,MyIdESDto 使用来自 MyIdDto 的信息。后一个对象是使用数据库中的数据构建的,而 MyIdESDto 是从 ElasticSearch 构建的,并使用 MyIdDto 数据完成。

在我看来,应该只有1个DTO,并且代码在DTO中设置尽可能多的字段。其他人说 MyIdESDto 应该扩展 MyIdDto。其他人也同意这种实现,并表示如果删除某些功能也不会破坏代码。使用哪一个更好?你能告诉我你选择的理由吗?

    @Data
    @NoArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class MyIdESDto {
      private String name;
      private Integer id;
      private Integer age;


     public MyIdESDto(MyDto dto) {
        this.name = dto.getName();
        this.id = dto.getId();
        this.aage = 42;
     }
}




@Data
    @NoArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class MyIdDto {
      private String name;
      private Integer id;
   }

最佳答案

由于第三组给出的相同原因,我会选择当前的实现。

对我来说,继承不是一个好主意,因为我在这里没有看到 is-a 关系;它们只是有一些相似且有些相关的属性。

关于java - 我们应该有类似的 DTO 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45633273/

相关文章:

javascript - 在 JavaScript 中调用重写的方法

javascript - 在对象内部管理 addEventListener() 和 removeEventListener()

c# - CRUD ASP.NET Core 的最佳实践设计 DTO?

java - 好的做法,传输 id 还是 DTO 对象?

java - 执行依赖于其他任务的 CompletableFuture

java - 在过滤器中设置授权 header

c++ - 使用函数继承类,具有静态成员

asp.net-web-api - 如何将复杂类型参数(DTO 对象)传递给 GET 请求?

java - 如何使用 cassandra spring 单元执行多个测试

java - spring MVC 服务器是否为请求数据创建连接?