Ter o encadeamento implementado nos beans é muito útil: não é necessário sobrecarregar construtores, mega construtores, fábricas e oferece maior legibilidade. Não consigo pensar em nenhuma desvantagem, a menos que você queira que seu objeto seja imutável ; nesse caso, não haveria nenhum levantador de qualquer maneira. Então, existe uma razão para que essa não seja uma convenção 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();
Eu faria isso, para não entrar em conflito com a idéia geral de que levantadores são vazios.
new Foo().setBar('bar').setBaz('baz')
parece muito "fluente". Quero dizer, com certeza ele poderia ser implementado exatamente da mesma maneira, mas eu esperaria muito ler algo mais parecido comFoo().barsThe('bar').withThe('baz').andQuuxes('the quux')