(15)建造者模式
概念
为了灵活构造复杂对象,该对象会有多个成员变量,在外部调用的时候,不需要或者不方便一次性创建出所有的成员变量,所以需要建造者模式。
建造者模式主要是为了把一个复杂的对象分步骤去创建。
比如要组装电脑,电脑中有CPU/主板/显示器/内存卡等等很多的属性,如果使用构造方法去创建电脑,那会显得很复杂,因为new对象的时候需要传入很多的属性
实现方式
import lombok.Data;
/**
* 建造者
*/
public class Demo {
public static void main(String[] args) {
Director director = new Director();
Computer computer1 = director.createComputer(new HWComputerBuilder());
System.out.println(computer1);
Computer computer2 = director.createComputer(new XMComputerBuilder());
System.out.println(computer2);
}
}
// 最终产品,电脑
@Data
class Computer {
private String name;
private String cpu;
private String systemType;
@Override
public String toString() {
return "主机信息\n" +
"设备名称:" + name + '\n' +
"处理器:" + cpu + '\n' +
"系统类型:" + systemType + '\n';
}
}
// 抽象建造者,所有建造者都要实现该接口
interface Builder {
void buildName();
void buildCpu();
void buildSystemType();
Computer getComputer();
}
// 具体建造者,华为电脑建造者
class HWComputerBuilder implements Builder {
private Computer c;
public HWComputerBuilder() {
this.c = new Computer();
}
@Override
public void buildName() {
c.setName("华为电脑");
}
@Override
public void buildCpu() {
c.setCpu("Intel(R) Core(TM)i7-10510U CPU1.8Hz~2.3Hz");
}
@Override
public void buildSystemType() {
c.setSystemType("Microsoft Windows 10 企业版 LTSC");
}
@Override
public Computer getComputer() {
return c;
}
}
// 具体建造者,小米电脑建造者
class XMComputerBuilder implements Builder {
private Computer c;
public XMComputerBuilder() {
this.c = new Computer();
}
@Override
public void buildName() {
c.setName("小米电脑");
}
@Override
public void buildCpu() {
c.setCpu("Intel(R) Core(TM)i9-10000 CPU2.3Hz~3.3Hz");
}
@Override
public void buildSystemType() {
c.setSystemType("Microsoft Windows 7 家庭版");
}
@Override
public Computer getComputer() {
return c;
}
}
// 指挥者。指挥建造者如何建造电脑。
// 指挥者更像是一个电脑图纸,参数传入一个工人,工人根据图纸拼装电脑
class Director {
public Computer createComputer(Builder builder) {
builder.buildName();
builder.buildCpu();
builder.buildSystemType();
return builder.getComputer();
}
}
主机信息
设备名称:华为电脑
处理器:Intel(R) Core(TM)i7-10510U CPU1.8Hz~2.3Hz
系统类型:Microsoft Windows 10 企业版 LTSC
主机信息
设备名称:小米电脑
处理器:Intel(R) Core(TM)i9-10000 CPU2.3Hz~3.3Hz
系统类型:Microsoft Windows 7 家庭版