优点:
1.创建对象的过程稳定不变(因为有ComputerBuilder接口来稳定过程)
2.创建对象的过程只写了一次,没有重复代码。(指挥者完成)
3.当需要扩展的时候,不用修改之前的代码。(新增xxxxxBuilder接口 即可)
//建造者设计模式
public class Builder {
public static void main (String[] args) {
AdvancedComputerBuilder acb = new AdvancedComputerBuilder();
Director director = new Director();
Computer computer = director.build(acb);
System.out.println(computer);
}
}
@Data
class Computer {
private String cpu;
private String name;
private String memory;
}
interface ComputerBuilder {
void setCpu();
void setName();
void setMemory();
Computer build();
}
class Director {
public Computer build (ComputerBuilder cb) {
cb.setCpu();
cb.setName();
cb.setMemory();
return cb.build();
}
}
class AdvancedComputerBuilder implements ComputerBuilder {
private Computer computer = new Computer();
@Override
public void setCpu() {
computer.setCpu("i7");
}
@Override
public void setName() {
computer.setName("DELL");
}
@Override
public void setMemory() {
computer.setMemory("64G");
}
@Override
public Computer build() {
return computer;
}
}