Builder是内部类,用来构造类。
Builder的作用就是:默认属性代替设置属性,清晰代码意图。
构造方法中只设置必须参数(可以设置为final),在构造后再set可选初始化数据,每一个set返回一个Builder(this),从而可以依次连续build。
通过默认值和new的参数,将必须参数和可选参数分离。
将构造过程和属性配置分离。
public class Car {
// 必要参数
private final String engine;
private final String wheels;
// 可选参数
private final boolean airbags;
private final boolean sunroof;
// 私有构造函数,只有Builder可以访问
private Car(CarBuilder builder) {
this.engine = builder.engine;
this.wheels = builder.wheels;
this.airbags = builder.airbags;
this.sunroof = builder.sunroof;
}
// 静态嵌套Builder类
public static class CarBuilder {
// 必要参数
private final String engine;
private final String wheels;
// 可选参数,默认值为false
private boolean airbags = false;
private boolean sunroof = false;
// Builder构造函数,传入必要参数
public CarBuilder(String engine, String wheels) {
this.engine = engine;
this.wheels = wheels;
}
// 设置可选参数的方法
public CarBuilder setAirbags(boolean airbags) {
this.airbags = airbags;
return this;
}
public CarBuilder setSunroof(boolean sunroof) {
this.sunroof = sunroof;
return this;
}
// 构建方法,返回最终的Car对象
public Car build() {
return new Car(this);
}
}
}