软件设计 石家庄铁道大学信息学院
实验5:建造者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解建造者模式的动机,掌握该模式的结构;
2、能够利用建造者模式解决实际问题。
[实验任务一]:计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
实验要求:
1. 画出对应的类图;
2.提交源代码;
// 计算机产品类
class Computer
{
private String cpu;
private String memory;
private String hardDisk;
private String host;
public void setCpu(String cpu) {
this.cpu = cpu;
}
public void setMemory(String memory) {
this.memory = memory;
}
public void setHardDisk(String hardDisk) {
this.hardDisk = hardDisk;
}
public void setHost(String host) {
this.host = host;
}
@Override
public String toString() {
return "Computer{" +
"cpu='" + cpu + '\''
+
", memory='" + memory
+ '\'' +
", hardDisk='" +
hardDisk + '\'' +
", host='" + host +
'\'' +
'}';
}
}
// 抽象建造者
interface
ComputerBuilder {
void buildCPU();
void buildMemory();
void buildHardDisk();
void buildHost();
Computer getComputer();
}
// 笔记本电脑建造者
class
LaptopBuilder implements ComputerBuilder {
private Computer computer = new Computer();
@Override
public void buildCPU() {
computer.setCpu("笔记本CPU");
}
@Override
public void buildMemory() {
computer.setMemory("笔记本内存");
}
@Override
public void buildHardDisk() {
computer.setHardDisk("笔记本硬盘");
}
@Override
public void buildHost() {
computer.setHost("笔记本主机");
}
@Override
public Computer getComputer() {
return computer;
}
}
// 台式电脑建造者
class
DesktopBuilder implements ComputerBuilder {
private Computer computer = new Computer();
@Override
public void buildCPU() {
computer.setCpu("台式机CPU");
}
@Override
public void buildMemory() {
computer.setMemory("台式机内存");
}
@Override
public void buildHardDisk() {
computer.setHardDisk("台式机硬盘");
}
@Override
public void buildHost() {
computer.setHost("台式机主机");
}
@Override
public Computer getComputer() {
return computer;
}
}
// 指挥者
class
ComputerDirector {
public void
constructComputer(ComputerBuilder builder) {
builder.buildCPU();
builder.buildMemory();
builder.buildHardDisk();
builder.buildHost();
}
}
public class
Main {
public static void main(String[] args) {
// 创建笔记本电脑建造者
ComputerBuilder laptopBuilder = new
LaptopBuilder();
// 创建指挥者并指挥构建笔记本电脑
ComputerDirector director = new
ComputerDirector();
director.constructComputer(laptopBuilder);
Computer laptop =
laptopBuilder.getComputer();
System.out.println("组装的笔记本电脑:" + laptop);
// 创建台式电脑建造者
ComputerBuilder desktopBuilder = new
DesktopBuilder();
// 指挥构建台式电脑
director.constructComputer(desktopBuilder);
Computer desktop =
desktopBuilder.getComputer();
System.out.println("组装的台式电脑:" + desktop);
}
}
3.注意编程规范。