之前使用的都是javabeans方式创建,如果属性较多需要多次set,在构造过程中javabean可能处于不一致的状态,比较麻烦。这时可以使用builder方式。它是不直接产生想要的对象,而是通过静态工厂的方式创建builder对象,然后再利用这个对象来set需要的对象属性。示例如下:
public class Nutrifacts {
private final int servingSize;
private final int servings;
private final int calories;
private final int sodium;
<span style="white-space:pre"> </span>
// 使用静态内部类就不用依赖外部类对象来创建内部类对象
public static class Builder {
private final int servingSize;
private final int servings;
private int calories = 0;
private int sodium = 0;
// 设置默认参数值
public Builder(int servingsize, int servings) {
this.servingSize = servingsize;
this.servings = servings;
}
public Builder calories(int val) {
this.calories = val;
return this;
}
public Builder sodium(int val) {
this.sodium = val;
return this;
}
// 将构造好得builder对象传给外部类的构造器
public Nutrifacts Builder() {
return new Nutrifacts(this);
}
}
public Nutrifacts(Builder builder) {
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
sodium = builder.sodium;
}
public static void main(String[] args) {
// 生成对象
Nutrifacts nutrifacts = new Nutrifacts.Builder(0, 0).calories(0)
.sodium(0).Builder();
}
}