设计模式实验五
软件设计 石家庄铁道大学信息学院
实验5:建造者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解建造者模式的动机,掌握该模式的结构;
2、能够利用建造者模式解决实际问题。
[实验任务一]:计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
实验要求:
1. 画出对应的类图;
![]()
2.提交源代码;
// 产品类:Computer
class Computer {
private String
CPU;
private String
memory;
private String
hardDrive;
private String
computerCase;
public void
setCPU(String CPU) {
this.CPU =
CPU;
}
public void
setMemory(String memory) {
this.memory =
memory;
}
public void
setHardDrive(String hardDrive) {
this.hardDrive = hardDrive;
}
public void
setComputerCase(String computerCase) {
this.computerCase = computerCase;
}
public void
showSpecifications() {
System.out.println("CPU: " +
CPU);
System.out.println("Memory: " + memory);
System.out.println("Hard Drive: " + hardDrive);
System.out.println("Computer Case: " + computerCase);
}
}
// 抽象建造者类:ComputerBuilder
abstract class ComputerBuilder {
protected
Computer computer = new Computer();
public abstract
void buildCPU();
public abstract
void buildMemory();
public abstract
void buildHardDrive();
public abstract
void buildCase();
public Computer
getComputer() {
return
computer;
}
}
// 具体建造者:LaptopBuilder
class LaptopBuilder extends ComputerBuilder {
public void
buildCPU() {
computer.setCPU("Laptop CPU");
}
public void
buildMemory() {
computer.setMemory("Laptop Memory");
}
public void
buildHardDrive() {
computer.setHardDrive("Laptop Hard Drive");
}
public void
buildCase() {
computer.setComputerCase("Laptop Case");
}
}
// 具体建造者:DesktopBuilder
class DesktopBuilder extends ComputerBuilder {
public void
buildCPU() {
computer.setCPU("Desktop CPU");
}
public void
buildMemory() {
computer.setMemory("Desktop Memory");
}
public void
buildHardDrive() {
computer.setHardDrive("Desktop Hard Drive");
}
public void
buildCase() {
computer.setComputerCase("Desktop Case");
}
}
// 指挥者类:Director
class Director {
private
ComputerBuilder builder;
public
Director(ComputerBuilder builder) {
this.builder
= builder;
}
public void
constructComputer() {
builder.buildCPU();
builder.buildMemory();
builder.buildHardDrive();
builder.buildCase();
}
public Computer
getComputer() {
return
builder.getComputer();
}
}
// 测试类
public class Client {
public static
void main(String[] args) {
// 构建笔记本电脑
ComputerBuilder laptopBuilder = new LaptopBuilder();
Director
director1 = new Director(laptopBuilder);
director1.constructComputer();
Computer
laptop = director1.getComputer();
System.out.println("Laptop Specifications:");
laptop.showSpecifications();
// 构建台式电脑
ComputerBuilder desktopBuilder = new DesktopBuilder();
Director
director2 = new Director(desktopBuilder);
director2.constructComputer();
Computer
desktop = director2.getComputer();
System.out.println("\nDesktop Specifications:");
desktop.showSpecifications();
}
}
3.注意编程规范。