Memiliki rantai yang diimplementasikan pada kacang sangat berguna: tidak perlu untuk membebani konstruktor, konstruktor besar, pabrik, dan memberi Anda peningkatan keterbacaan. Saya tidak bisa memikirkan kelemahan, kecuali jika Anda ingin objek Anda tidak berubah , dalam hal ini tidak akan memiliki setter. Jadi adakah alasan mengapa ini bukan konvensi 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();
Saya akan melakukannya, agar tidak bertentangan dengan gagasan umum bahwa setter kosong.
new Foo().setBar('bar').setBaz('baz')
terasa sangat "lancar". Maksudku, tentu saja bisa diimplementasikan dengan cara yang persis sama, tetapi saya sangat berharap untuk membaca sesuatu yang lebih miripFoo().barsThe('bar').withThe('baz').andQuuxes('the quux')