建造者模式(Builder Pattern)

144 阅读1分钟

建造者模式(Builder Pattern)

1.1 建造者模式

建造者模式(Builder Pattern):使用多个简单的对象一步一步构建成一个复杂的对象。

优点

​ 1、建造者独立,易扩展。

​ 2、便于控制细节风险。

缺点:

​ 1、产品必须有共同点,范围有限制。

​ 2、如内部变化复杂,会有很多的建造类。

简单讲就是A、B、C三个字母随机组合。产生的不同组合。也可以拿麦当劳举例:汉堡、炸鸡、鼠标、可乐、冰淇淋是不会变的。而上面的食物会形成不同的组成套餐。就可以看成一个简单的建造者模式的使用。

1.2 解决的问题

  • 方便创建复杂的对象(不需要一直set)
  • 代码的复用性&封装

1.3 示例代码:

1.3.1 普通new对象

@Data
@AllArgsConstructor(所有参数都构造方法)
public class Computer {
    private String cpu;
    private String screen;
    private String memory;
    private String mainboard;

    public Computer(String cpu, String screen, String memory, String mainboard) {
        this.cpu = cpu;
        this.screen = screen;
        this.memory = memory;
        this.mainboard = mainboard;
    }
}
class Click{
  //主函数new一个computer对象
    public static void main(String[] args) {
        Computer computer = new Computer("cpu", "cpu", "cpu", "cpu");
      
    }
}

1.3.2 Builder构建对象

@Data
class NewComputer {
    private String cpu;
    private String screen;
    private String memory;
    private String mainboard;

    public NewComputer() {
    }
    private NewComputer(Builder builder){
        cpu=builder.cpu;
        screen=builder.screen;
        memory=builder.memory;
        mainboard=builder.mainboard;
    }
    @Data
     public static final class Builder{
         private String cpu;
         private String screen;
         private String memory;
         private String mainboard;

         public Builder() {
         }
        public Builder cpu(String val) {
            cpu = val;
          	//返回当前类
            return this;
        }
        public Builder screen(String val) {
            screen = val;
            return this;
        }
        public Builder memory(String val) {
            memory = val;
            return this;
        }
        public Builder mainboard(String val) {
            mainboard = val;
            return this;
        }
        public NewComputer build(){
             return new NewComputer(this);
         }
     }
}