软件设计 石家庄铁道大学信息学院
实验5:建造者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解建造者模式的动机,掌握该模式的结构;
2、能够利用建造者模式解决实际问题。
[实验任务一]:计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
实验要求:
1. 画出对应的类图;
2.提交源代码;
// Computer.java
public class Computer {
private String
cpu;
private String
ram;
private String
hdd;
private String
caseType;
public void
setCPU(String cpu) {
this.cpu =
cpu;
}
public void
setRAM(String ram) {
this.ram =
ram;
}
public void
setHDD(String hdd) {
this.hdd =
hdd;
}
public void
setCaseType(String caseType) {
this.caseType
= caseType;
}
public void
showSpecifications() {
System.out.println("CPU: " + cpu);
System.out.println("RAM: " + ram);
System.out.println("HDD: " + hdd);
System.out.println("Case Type: " + caseType);
}
}
// ComputerBuilder.java
abstract class ComputerBuilder {
protected
Computer computer;
public
ComputerBuilder() {
computer =
new Computer();
}
public abstract
void setCPU();
public abstract
void setRAM();
public abstract
void setHDD();
public abstract
void setCaseType();
public Computer
build() {
return
computer;
}
}
// LaptopBuilder.java
class LaptopBuilder extends ComputerBuilder {
@Override
public void
setCPU() {
computer.setCPU("Intel i7");
}
@Override
public void
setRAM() {
computer.setRAM("16GB");
}
@Override
public void
setHDD() {
computer.setHDD("512GB SSD");
}
@Override
public void
setCaseType() {
computer.setCaseType("Laptop");
}
}
// DesktopBuilder.java
class DesktopBuilder extends ComputerBuilder {
@Override
public void
setCPU() {
computer.setCPU("AMD Ryzen 7");
}
@Override
public void
setRAM() {
computer.setRAM("32GB");
}
@Override
public void
setHDD() {
computer.setHDD("1TB HDD");
}
@Override
public void
setCaseType() {
computer.setCaseType("Desktop");
}
}
// Director.java
class Director {
private
ComputerBuilder builder;
public
Director(ComputerBuilder builder) {
this.builder
= builder;
}
public Computer
construct() {
builder.setCPU();
builder.setRAM();
builder.setHDD();
builder.setCaseType();
return
builder.build();
}
}
// Main.java
public class Main {
public static
void main(String[] args) {
// Create a
laptop
ComputerBuilder laptopBuilder = new LaptopBuilder();
Director
laptopDirector = new Director(laptopBuilder);
Computer
laptop = laptopDirector.construct();
System.out.println("Laptop Specifications:");
laptop.showSpecifications();
// Create a
desktop
ComputerBuilder desktopBuilder = new DesktopBuilder();
Director
desktopDirector = new Director(desktopBuilder);
Computer
desktop = desktopDirector.construct();
System.out.println("\nDesktop Specifications:");
desktop.showSpecifications();
}
}
3.注意编程规范。