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;// 可选参数,默认值为falseprivate 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);}}}