10/23

软件设计                  石家庄铁道大学信息学院

 

实验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.注意编程规范。

posted @ 2024-10-23 17:32  Hbro  阅读(7)  评论(0)    收藏  举报