9D3.读写分离Dto
原创实战手册小于 1 分钟
9D3.读写分离Dto
在Wings中,出于数据保护和防方法泄露的目的,需要入参的Dto是只读状态。
Getter加Builder
@Getter @Builder
@ToString @EqualsAndHashCode
public class RwsDto {
private Long id;
private String name;
}
最简单的分离策略,有lombok加持,代码也非常简洁。
RwsDto p = RwsDto.builder()
.id(1L)
.name("name")
.build();
Builder插件
@Getter
@ToString @EqualsAndHashCode
public final class RwsDto {
private final Long id;
private final String name;
// Alt + Insert > Builder
}
在IDEA中使用 InnerBuilder ,选中以下选项
- Generate builder methods for final fields
- Generate static newBuilder()method
- Rename newBuilder()to builder()
- Generate builder copy constructor
相比于lombok,可以在生成的builder方法中,自己动手加料。
手工搞继承
Builder模式,主要是final+同字段赋值的模式,以下是以继承方式的封装。
@Getter
@ToString @EqualsAndHashCode
public class RwsDto {
protected Long id;
protected String name;
public static Builder builder() {return new Builder();}
public static class Builder extends RwsDto {
public Builder() {
// 初始化固定值
}
public Builder id(Long id){
Objects.requireNonNull(id);
super.id = id;
return this;
}
public Builder name(String name){
super.name = name;
return this;
}
public RwsDto build(){
return this;
}
}
}