[英]Should members of static class in Builder pattern be final?
因此,我已經在Builder Pattern上看到了幾個示例。 總之,靜態類或Builder只有那些最終可以由構造函數初始化的成員。 范例-
public class User {
private final String firstName; // required
private final String lastName; // required
private final int age; // optional
private User(UserBuilder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.phone = builder.phone;
this.address = builder.address;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public static class UserBuilder {
private final String firstName;
private final String lastName;
private int age;
public UserBuilder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public UserBuilder age(int age) {
this.age = age;
return this;
}
}
}
為什么只有名和姓是最終的,可以由構造函數初始化? 那之后不能設置嗎? 我的疑問是我是否不能從First和Last中刪除final並擁有一個初始化所有三個成員並在類中也具有對應的setter的構造函數?
這里的設計是必須始終設置名字和姓氏,但是年齡是可選的。 (我會在這里使用Integer
,而不是默認為0 ...但是我還是想使用birthDate
...但我離題了。)
通過強制在構造中顯示名字和姓氏來傳達“必需與可選”部分,那么您為什么還想要二傳手? 您何時要在構造函數中將名字設置為一個事物,然后進行更改?
您可以將字段設置為非最終值,並添加設置器...我只是認為這樣做不是一件特別好的事情。 這不是任何失敗的問題,而只是通過API設計傳達的信息的變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.