在创建Builder模式时,我总是将构建器对象传递给类私有构造器,并将静态内部类构建器属性初始化为外部类。
public class Outer {
private final String name;
private final String country;
private final String zipcode;
// option 1
private Outer(String name, String country, String zipcode) {
super();
this.name = name;
this.country = country;
this.zipcode = zipcode;
}
// option 2
public Outer(Builder builder) {
this.country = builder.country;
this.name = builder.name;
this.zipcode = builder.zipcode;
}
static class Builder {
private String name;
private String country;
private String zipcode;
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setZipsetCountry(String zip) {
this.zipcode = zip;
return this;
}
public Builder setCountry(String country) {
this.country = country;
return this;
}
//option 1
Outer build() {
return new Outer(name, country, zipcode);
}
//option 2
Outer buildOption2() {
return new Outer(this);
}
}
}
在这种情况下,我过去总是使用选项2。但是,我大学的观点之一是,将构建器类与外部类相结合。但我认为将外部类与内部类结合在一起是可以的,因为这是内部类的本质。那是内部阶级,实际上是在进一步组织外部阶级。
使用第一个选项时,如果要传递20、30个参数,可能会很麻烦,因为它总是推迟使用构建器模式的时间。我大学的观点是它只发生一次。在这一点上,我有点卡住,看起来对我来说都可以。我在这里想念什么?