Devo usar o padrão do construtor no DTO?
Essa pode ser uma pergunta bastante subjetiva, mas eu gostaria de saber mais algumas opiniões. Criei um serviço Rest API com Spring MVC e implementei o padrão DTO-Domain-Entity. Quero saber o que você acha da implementação doPadrão do Construtor em DTOs, algo como
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);
}
}
}
De acordo com a definição:
A intenção do padrão de design do Builder é separar a construção de um objeto complexo de sua representação. Ao fazer isso, o mesmo processo de construção pode criar representações diferentes.
Na maioria dos meus casos de DTO (para não dizer todos), não tenho um objeto mais complexo para construir, como esse. E, honestamente, não consigo pensar em nenhum exemplo de construção de um objeto complexo se estivermos falando de DTOs.
Um dos padrões que ajuda a facilitar a utilização de objetos imutáveis e a adicionar clareza ao código é o padrão Builder.
O padrão Builder fornece imutabilidade de objetos. Então, podemos pensar que um DTOs é a resposta do serviço em si e não deve ser alterado, pois é uma resposta (pelo menos é assim que estou pensando)
Então, o que você acha? Devo usar esse padrão para DTOs (dado que esse caso, e provavelmente a maioria deles, não satisfaz o princípio complexo do objeto)?