大三打卡(11.8)

实验5:建造者模式

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

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

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

 
   

 


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

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

实验要求:

1.  画出对应的类图;

 

2.  提交源代码;

package RJSJ.test5;

 

public class Computer {

    private String CPU;

    private String RAM;

    private String Hard;

    private String Host;

 

    public String getCPU() {

        return CPU;

    }

 

    public void setCPU(String CPU) {

        this.CPU = CPU;

    }

 

    public String getRAM() {

        return RAM;

    }

 

    public void setRAM(String RAM) {

        this.RAM = RAM;

    }

 

    public String getHard() {

        return Hard;

    }

 

    public void setHard(String hard) {

        Hard = hard;

    }

 

    public String getHost() {

        return Host;

    }

 

    public void setHost(String host) {

        Host = host;

    }

 

    @Override

    public String toString() {

        return "Computer{" +

                "CPU='" + CPU + '\'' +

                ", RAM='" + RAM + '\'' +

                ", Hard='" + Hard + '\'' +

                ", Host='" + Host + '\'' +

                '}';

    }

}

package RJSJ.test5;

 

public abstract class ComputerBuilder {

    protected Computer computer=new Computer();

    public abstract void buildCPU();

    public abstract void buildRAM();

    public abstract void buildHard();

    public abstract void buildHost();

    public Computer getComputer()

    {

        return computer;

    }

}

package RJSJ.test5;

 

public class DesktopComputer extends ComputerBuilder{

    public void buildCPU() {

        computer.setCPU("台式机CPU");

    }

    public void buildRAM() {

        computer.setRAM("台式机内存");

    }

    public void buildHard() {

        computer.setHard("台式机硬盘");

    }

    public void buildHost() {

        computer.setHost("台式机主机");

    }

}

package RJSJ.test5;

 

public class Director {

    private ComputerBuilder computerBuilder;

    public void setComputerBuilder(ComputerBuilder c){

        computerBuilder=c;

    }

    public Computer construct(){

        computerBuilder.buildCPU();

        computerBuilder.buildRAM();

        computerBuilder.buildHard();

        computerBuilder.buildHost();

        return computerBuilder.getComputer();

    }

}

package RJSJ.test5;

 

public class LaptopComputer extends  ComputerBuilder{

    public void buildCPU() {

        computer.setCPU("笔记本CPU");

    }

    public void buildRAM() {

        computer.setRAM("笔记本内存");

    }

    public void buildHard() {

        computer.setHard("笔记本硬盘");

    }

    public void buildHost() {

        computer.setHost("笔记本主机");

    }

}

package RJSJ.test5;

 

public class main {

    public static void main(String[] args) {

        Director director=new Director();

        ComputerBuilder cb;

        System.out.println("安装笔记本");

        cb=new LaptopComputer();

        director.setComputerBuilder(cb);

        Computer Laptop = director.construct();

        System.out.println(Laptop.toString());

 

 

 

        System.out.println("安装台式机");

        cb=new DesktopComputer();

        director.setComputerBuilder(cb);

        Computer Desktop = director.construct();

        System.out.println(Desktop.toString());

    }

}

posted @   夏季彼岸德  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示