Beanにチェーンを実装すると非常に便利です。コンストラクター、メガコンストラクター、ファクトリーをオーバーロードする必要がなく、読みやすさが向上します。オブジェクトを不変にしたい場合を除き、欠点は考えられません。その場合、とにかくセッターはありません。これが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();
セッターは無効であるという一般的な考えと矛盾しないように、私はそうします。
new Foo().setBar('bar').setBaz('baz')
は非常に「流fluent」だとは思わないでしょう。つまり、まったく同じ方法で実装できますが、次のようなものを読むことを非常に期待していますFoo().barsThe('bar').withThe('baz').andQuuxes('the quux')