在Builder模式中,通常只有一个参数化构造函数,其余的属性可以通过方法链式调用来设置。如果想要添加额外的构造函数,可以在Builder类中添加一个新的静态方法来返回一个已经初始化好的Builder对象。
代码示例:
public class Person { private String name; private int age; private String address;
// 构造函数私有,只能通过Builder类来创建对象 private Person(String name, int age, String address) { this.name = name; this.age = age; this.address = address; }
// Builder类 public static class PersonBuilder { private String name; private int age; private String address;
public PersonBuilder() {
}
public PersonBuilder withName(String name) {
this.name = name;
return this;
}
public PersonBuilder withAge(int age) {
this.age = age;
return this;
}
public PersonBuilder withAddress(String address) {
this.address = address;
return this;
}
public Person build() {
return new Person(name, age, address);
}
// 新的静态方法
public static PersonBuilder withDefault() {
return new PersonBuilder()
.withName("John")
.withAge(30)
.withAddress("123 Main St.");
}
} }
通过这种方式,我们可以在Builder模式中添加额外的构造函数并提供默认值。例如,我们可以这样创建一个新的Person对象:
Person person = Person.PersonBuilder.withDefault().build();