24.11.18

实验5:建造者模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解建造者模式的动机,掌握该模式的结构;

2、能够利用建造者模式解决实际问题。

[实验任务一]:计算机组装

使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

 

  1. 类图如下:

 

 

  1. 代码如下:

// 定义计算机产品类

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();

    }

}

posted on 2024-11-18 18:03  Daniel350  阅读(11)  评论(0)    收藏  举报