Builder建造者模式

发布于:2024-05-15 ⋅ 阅读:(136) ⋅ 点赞:(0)

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);
        }
    }
 }

网站公告

今日签到

点亮在社区的每一天
去签到