建造者模式(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);
}
}
}