一、建造者模式
1、建造者模式(Builder Pattern)是一种创建对象的设计模式。它允许你使用不同的构建策略来创建复杂对象。通常是在复杂类中通过静态内部类(Builder)来进行构建。
2、实现思路:
(1)、创建实体类中,私有化构造方法
(2)、定义静态内部类Builder,Builder类包含和实体类相同的属性,以及每个属性的set方法,以及build()方法去调用实体的构造。
(3)、构建实例对象时,通过静态内部类Builder进行设值在build()进行实例对象的创建。
3、优点
(1)、相对于构造方法的方式,建造者模式无需关心构造方法的参数顺序。
(2)、相对于构造方法的方式,建造者模式套路更优,无需定义更多的构造方法。
(3)、创建实例的方式隐藏在内部,不会暴漏给外部,外部无法知道创建的具体过程。
(4)、创建对象的过程是链路进行设置的,相对而言,代码更灵活和可读性更好。
(5)、相对于new对象,在逐个set赋值的方式。建造者模式是先set,在new的过程。建造者可以确定对象一定存在,而前者可能存在构建失败造成空指针的问题等。
二、代码示例
代码示例:
java
public class Computer {
private String cpu;
private String gpu;
private String ram;
private String storage;
private Computer(Builder builder) {
this.cpu = builder.cpu;
this.gpu = builder.gpu;
this.ram = builder.ram;
this.storage = builder.storage;
}
@Override
public String toString() {
return "Computer{" + "cpu='" + cpu + '\'' + ", gpu='" + gpu + '\'' + ", ram='" + ram + '\'' + ", storage='" + storage + '\'' + '}';
}
public static class Builder {
private String cpu;
private String gpu;
private String ram;
private String storage;
public Builder setCpu(String cpu) {
this.cpu = cpu;
return this;
}
public Builder setGpu(String gpu) {
this.gpu = gpu;
return this;
}
public Builder setRam(String ram) {
this.ram = ram;
return this;
}
public Builder setStorage(String storage) {
this.storage = storage;
return this;
}
public Computer build() {
return new Computer(this);
}
}
public static void main(String[] args) {
Computer computer = new Computer.Builder()
.setCpu("CPU-i7")
.setGpu("GPU-3080")
.setRam("16GB")
.setStorage("1TB")
.build();
System.out.println(computer);
computer = new Computer.Builder()
.setCpu("CPU-i11")
.setGpu("GPU-9090")
.setRam("32GB")
.setStorage("2TB")
.build();
System.out.println(computer);
}
}
如上的代码示例中,在静态内部类Builder中,每一个set方法中通过return this,实现了设备值的同时,返回房前Builder对象,可以继续调用set方法,进而实现了链路设置的方式。
学海无涯苦作舟!!!