首页 > 解决方案 > 将一个 d 更改为另一个

问题描述

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GenerateDaByContextDto {
    private String cNumber;
    private BusinessContext businessContext;
    private String zCode;
    private String yCode;
    private String xCode;
    private String event;

    public GenerateContentDto toGenerateContentDto() {
        return GenerateContentDto.builder()
                .businessContext(businessContext)
                .event(event)
                .build();
    }
}

我正在进行代码审查,当我想知道像这样更改 DTO 是否可以?需要的是某些方法具有GenerateContentDto作为参数,并且可以从 GenerateDaByContextDto代码中的 DTO 获取。是否有其他选择可以让它变得更好?规则好不好SRP?我已经简化了DTOs字段。

标签: javadto

解决方案


强烈地说,它是基于意见的,取决于项目。

但是让我们记住单一责任原则。DTO 负责层之间的数据保存,而不是转换。我更喜欢有一个简单的转换器,方法如下:

public class GenerateDaByContextDtoConverter {
    public GenerateContentDto convert(GenerateDaByContextDto source) {...}
}

出于同样的原因,通常 DTO 是不可变的。您可以使用 lombok 的@Value注释。

如果与业务逻辑一致,则另一种解决方案可能是组合:

class GenerateDaByContextDto {

    private GenerateContentDto generateContentDto;
    ...
}

推荐阅读