假設你有一個名爲Person
類和Person
具有的屬性,如name
,id
,age
等反而在構造函數中設置這些值的,一個不Java:爲什麼要使用方法而不是構造函數?
new Person().withName("Lorem").withId("1234").withAge(29)
凡with
方法是呼叫到set
方法,並返回對象,例如,
public Person withAge(int age) {
this.setAge(age);
return this;
}
在當前項目中,我看到了很多這樣的代碼,常與5-10鏈式調用不同with
方法。這樣做的好處是什麼,而不是在構造函數中設置這些值?
那種某種Builder,從來沒有這樣的具體模式,但如果你有很多optionnal值,我猜這可能是一個好主意。 (PS:你忘記了'withAge'中的return語句) – AxelH
代碼更易讀:新的Person(「a」,「b」,「c」)不能很容易地指出a,b和c是什麼。 –
如果我看看你的代碼,我可以看到你在哪裏設置名稱,ID和年齡。如果我看到「新人」(「Lorem」,「1234」,29)',我沒有得到那個信息。如果Java允許某些其他語言(比如C#和Swift)使用命名參數,那麼對這種鏈接的需求將會減少。這是我對Java的第一投訴,我不確定爲什麼沒有任何舉動來添加此功能,我可以看到。 – ajb