2
在构建器中声明父类的实例并使用该变量初始化每个Field
并在构建器中再次分别声明每个变量,然后声明构建器作为构造器的一部分来初始化每个Field
有什么区别?这些构建器模式之间有什么区别?
public class Foo {
public int i;
public String s;
private Foo(Builder builder) {
i = builder.i;
s = builder.s;
}
public static class Builder {
private int i;
private String s;
public Builder i(int i) {
this.i = i;
return this;
}
public Builder s(String s) {
this.s = s;
return this;
}
public Foo build() {
return new Foo(this);
}
}
}
public class Foo {
public int i;
public String s;
public static class Builder {
private final Foo mFoo = new Foo();
public Builder i(int i) {
mFoo.i = i;
return this;
}
public Builder s(String s) {
mFoo.s = s;
return this;
}
public Foo build() {
return mFoo;
}
}
}
删除该样板是我甚至考虑第二个的唯一原因。我的类包含了很多变量,并且有一个100多行代码大部分来自setter的代码,这有点让人讨厌。 – user4081847 2014-09-26 03:44:02