次のスニペットは、Javaで基本的なビルダーパターンを実装する方法を示しています。Javaでのビルダーパターンの継承方法
public class User {
private final String firstName; // required
private final String lastName; // required
private final int age; // optional
private final String phone; // optional
private final String address; // 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 String getPhone() {
return phone;
}
public String getAddress() {
return address;
}
public static class UserBuilder {
private final String firstName;
private final String lastName;
private int age;
private String phone;
private String address;
public UserBuilder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public UserBuilder age(int age) {
this.age = age;
return this;
}
public UserBuilder phone(String phone) {
this.phone = phone;
return this;
}
public UserBuilder address(String address) {
this.address = address;
return this;
}
public User build() {
return new User(this);
}
}
Q:私は、同じスーパー(スーパークラスとして抽象的/非抽象スーパーユーザのように、そしてユーザーA、ユーザーB、よびUserCはそれを拡張する)クラスで、Userクラスの一つのモデル、より多くを持っている場合、 どのようにすることができます各クラスの特定のビルダーを追加するよりも、少ないコードでビルダーを実装、私はサブクラスのすべてのための1つのビルダーを作成したい
Thnaks
私はメインビルダーに基づいて、各サブクラスのための内部クラスを書くことをお勧めして、内側のビルダー – Andrew
にアクセスするには、その後にすべてのフィールドを変更する必要があり、静的メソッドを作成するには、パブリックにアクセスすることはしていませんパターンのパラダイムを破壊する? – yarin