将一个 dto 更改为另一个

@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 是否可以?需要的是某些方法具有参数,并且可以从代码中的 DTOGenerateContentDto获取它 。GenerateDaByContextDto还有其他选择可以让它变得更好吗?SRP关于规则好吗?我已经简化了这些DTOs字段。


茅侃侃
浏览 56回答 2
2回答

隔江千里

强烈地说,它是基于意见并取决于项目。但让我们记住单一责任原则。DTO 负责层之间的数据保存,而不是转换。我更喜欢有一个简单的转换器,其方法如下:public class GenerateDaByContextDtoConverter {     public GenerateContentDto convert(GenerateDaByContextDto source) {...} }出于同样的原因,通常 DTO 是不可变的。您可以使用 lombok 的@Value注释。如果符合业务逻辑,另一种解决方案可能是组合:class GenerateDaByContextDto {     private GenerateContentDto generateContentDto;     ... }

回首忆惘然

您可以将@Getter, @Builder, @AllArgsConstructor,替换@NoArgsConstructor为@Data这是更好的方法@Datapublic 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();    }*/}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java