为了账号安全,请及时绑定邮箱和手机立即绑定

将一个 dto 更改为另一个

将一个 dto 更改为另一个

茅侃侃 2024-01-05 16:57:48
@Getter@Builder@AllArgsConstructor@NoArgsConstructorpublic 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字段。
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

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

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

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

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

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

class GenerateDaByContextDto {
    private GenerateContentDto generateContentDto;
    ...
}


查看完整回答
反对 回复 2024-01-05
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您可以将@Getter, @Builder, @AllArgsConstructor,替换@NoArgsConstructor为@Data


这是更好的方法


@Data

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();

    }

*/

}


查看完整回答
反对 回复 2024-01-05
  • 2 回答
  • 0 关注
  • 53 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信