我有 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/