Tener encadenado implementado en beans es muy útil: no hay necesidad de sobrecargar a los constructores, megaconstructores, fábricas y le brinda una mayor legibilidad. No puedo pensar en ningún inconveniente, a menos que desee que su objeto sea inmutable , en cuyo caso no tendría ningún setter de todos modos. Entonces, ¿hay alguna razón por la cual esta no es una convención OOP?
public class DTO {
private String foo;
private String bar;
public String getFoo() {
return foo;
}
public String getBar() {
return bar;
}
public DTO setFoo(String foo) {
this.foo = foo;
return this;
}
public DTO setBar(String bar) {
this.bar = bar;
return this;
}
}
//...//
DTO dto = new DTO().setFoo("foo").setBar("bar");
myCustomDTO = DTOBuilder.defaultDTO().withFoo("foo").withBar("bar").Build();
Lo haría para no entrar en conflicto con la idea general de que los colocadores son vacíos.
new Foo().setBar('bar').setBaz('baz')
siente muy "fluido". Quiero decir, seguro que podría implementarse exactamente de la misma manera, pero esperaba leer algo más comoFoo().barsThe('bar').withThe('baz').andQuuxes('the quux')