これはかなり主観的な質問かもしれませんが、もう少し意見を知りたいです。Spring MVC を使用して Rest API サービスを構築し、DTO-Domain-Entity パターンを実装しました。Builder パターンを DTO に実装することについてどう思うか知りたいです。
public class UserResponseDTO
extends AbstractResponseDTO {
private String username;
private Boolean enabled;
public UserResponseDTO(String username, Boolean enabled) {
this.username = username;
this.enabled = enabled;
}
public String getUsername() {
return this.username;
}
public Boolean getEnabled() {
return this.enabled;
}
public static class Builder {
private String username;
private Boolean enabled;
public void setUsername(String username) {
this.username = username;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
public UserResponseDTO build(){
return new UserResponseDTO(username, enabled);
}
}
}
定義によると:
Builder 設計パターンの意図は、複雑なオブジェクトの構築をその表現から分離することです。そうすることで、同じ構築プロセスで異なる表現を作成できます。
私の DTO ケースのほとんど (すべてとは言いません) では、このケースのように、構築するより複雑なオブジェクトはありません。そして、正直なところ、DTO について話している場合、複雑なオブジェクトを構築する例は思い浮かびません。
不変オブジェクトを使いやすくし、コードを明確にするのに役立つパターンの 1 つに Builder パターンがあります。
Builder パターンは、オブジェクトの不変性を提供します。次に、DTOはサービス応答自体であり、これは応答であるため変更すべきではないと考えることができます(少なくともそれが私が考えている方法です)
それで、あなたはどう思いますか?このパターンを DTO に使用する必要がありますか (このケース、およびおそらくそれらのほとんどが複合オブジェクトの原則を満たしていないという事実を考えると)。