¿Debo usar el patrón de construcción en DTO?
Esta podría ser una pregunta bastante subjetiva, pero me gustaría saber algunas opiniones más. Creé un servicio Rest API con Spring MVC e implementé el patrón DTO-Domain-Entity. Quiero saber qué piensas acerca de implementar elPatrón de constructor en DTO, algo así 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);
}
}
}
Según la definición:
La intención del patrón de diseño de Builder es separar la construcción de un objeto complejo de su representación. Al hacerlo, el mismo proceso de construcción puede crear diferentes representaciones.
En la mayoría de mis casos de DTO (por no decir todos) no tengo un objeto más complejo para construir, como este caso. Y, sinceramente, no se me ocurre ningún ejemplo en el que construir un objeto complejo si estamos hablando de DTO.
Uno de los patrones que ayuda a hacer que los objetos inmutables sean más fáciles de usar y para agregar claridad al código es el patrón Builder.
El patrón de construcción proporciona objetos inmutables. Entonces, podemos pensar que un DTO es la respuesta del servicio en sí y no debe modificarse ya que esta es una respuesta (al menos así es como lo estoy pensando)
¿Entonces, qué piensas? ¿Debería usar este patrón para los DTO (dado el hecho de que este caso, y probablemente la mayoría de ellos, no satisface el principio del objeto complejo)?