Реализация цепочки на bean-компонентах очень удобна: нет необходимости перегружать конструкторы, мега-конструкторы, фабрики и обеспечивает повышенную читаемость. Я не могу думать о минусах, если только вы не хотите, чтобы ваш объект был неизменным , и в этом случае у него все равно не было бы сеттеров. Так есть ли причина, по которой это не соглашение об ООП?
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();
Я бы сделал это, чтобы не противоречить общей идее, что сеттеры - это пустоты.
new Foo().setBar('bar').setBaz('baz')
чувствует себя очень "свободно". Я имею в виду, конечно, что это может быть реализовано точно так же, но я бы очень рассчитывал прочитать что-то более похожееFoo().barsThe('bar').withThe('baz').andQuuxes('the quux')