24.11.18
实验5:建造者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解建造者模式的动机,掌握该模式的结构;
2、能够利用建造者模式解决实际问题。
[实验任务一]:计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
实验要求:
1.画出对应的类图;
2.提交源代码;
3.注意编程规范。
- 类图如下:

- 代码如下:
// 定义计算机产品类
class Computer {
private String CPU;
private String memory;
private String storage;
private String caseType; // 主机类型:笔记本或台式机
// 设置各个组件
public void setCPU(String CPU) {
this.CPU = CPU;
}
public void setMemory(String memory) {
this.memory = memory;
}
public void setStorage(String storage) {
this.storage = storage;
}
public void setCaseType(String caseType) {
this.caseType = caseType;
}
public void showSpecifications() {
System.out.println("计算机配置:");
System.out.println("CPU: " + CPU);
System.out.println("内存: " + memory);
System.out.println("硬盘: " + storage);
System.out.println("类型: " + caseType);
}
}
// 抽象建造者
abstract class ComputerBuilder {
protected Computer computer = new Computer();
public abstract void buildCPU();
public abstract void buildMemory();
public abstract void buildStorage();
public abstract void buildCaseType();
// 返回构建完成的计算机产品
public Computer getComputer() {
return computer;
}
}
// 笔记本电脑建造者
class LaptopBuilder extends ComputerBuilder {
public void buildCPU() {
computer.setCPU("Intel i7 低功耗版");
}
public void buildMemory() {
computer.setMemory("16GB DDR4");
}
public void buildStorage() {
computer.setStorage("512GB SSD");
}
public void buildCaseType() {
computer.setCaseType("笔记本");
}
}
// 台式机建造者
class DesktopBuilder extends ComputerBuilder {
public void buildCPU() {
computer.setCPU("AMD Ryzen 9");
}
public void buildMemory() {
computer.setMemory("32GB DDR4");
}
public void buildStorage() {
computer.setStorage("1TB SSD + 2TB HDD");
}
public void buildCaseType() {
computer.setCaseType("台式机");
}
}
// 指挥者类
class ComputerDirector {
private ComputerBuilder builder;
public ComputerDirector(ComputerBuilder builder) {
this.builder = builder;
}
public void construct() {
builder.buildCPU();
builder.buildMemory();
builder.buildStorage();
builder.buildCaseType();
}
public Computer getComputer() {
return builder.getComputer();
}
}
// 客户端
public class BuilderPatternDemo {
public static void main(String[] args) {
// 构建笔记本电脑
ComputerBuilder laptopBuilder = new LaptopBuilder();
ComputerDirector director1 = new ComputerDirector(laptopBuilder);
director1.construct();
Computer laptop = director1.getComputer();
laptop.showSpecifications();
System.out.println("----------");
// 构建台式机
ComputerBuilder desktopBuilder = new DesktopBuilder();
ComputerDirector director2 = new ComputerDirector(desktopBuilder);
director2.construct();
Computer desktop = director2.getComputer();
desktop.showSpecifications();
}
}
浙公网安备 33010602011771号