建造者模式

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

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

 

 

源代码:

interface Builder {
    void setCPU(String cpu);
    void setRam(int ram);
    void setHardDrive(String hardDrive);
    void setChassis(String chassis);
    Computer getComputer();
}

abstract class Computer {
    protected String cpu;
    protected int ram; // 内存大小,单位MB
    protected String hardDrive; // 硬盘容量,单位GB
    protected String chassis; // 主机壳

    public abstract void display();
}

class Desktop extends Computer {
    @Override
    public void display() {
        System.out.println("Desktop specs:");
        System.out.println("CPU: " + this.cpu);
        System.out.println("RAM: " + this.ram + " MB");
        System.out.println("Hard Drive: " + this.hardDrive + " GB");
        System.out.println("Chassis: " + this.chassis);
    }
}

class DesktopBuilder implements Builder {
    private Desktop desktop;

    public DesktopBuilder() {
        this.desktop = new Desktop();
    }

    // 实现Builder接口的方法
    @Override
    public void setCPU(String cpu) {
        this.desktop.cpu = cpu;
    }

    @Override
    public void setRam(int ram) {
        this.desktop.ram = ram;
    }

    @Override
    public void setHardDrive(String hardDrive) {
        this.desktop.hardDrive = hardDrive;
    }

    @Override
    public void setChassis(String chassis) {
        this.desktop.chassis = chassis;
    }

    @Override
    public Computer getComputer() {
        return this.desktop;
    }
}

class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public Computer construct(String cpu, int ram, String hardDrive, String chassis) {
        builder.setCPU(cpu);
        builder.setRam(ram);
        builder.setHardDrive(hardDrive);
        builder.setChassis(chassis);
        return builder.getComputer();
    }
}

class Notebook extends Computer {
    @Override
    public void display() {
        System.out.println("Notebook specs:");
        System.out.println("CPU: " + this.cpu);
        System.out.println("RAM: " + this.ram + " MB");
        System.out.println("Hard Drive: " + this.hardDrive + " GB");
        System.out.println("Chassis: " + this.chassis);
    }
}

class NotebookBuilder implements Builder {
    private Notebook notebook;

    public NotebookBuilder() {
        this.notebook = new Notebook();
    }

    @Override
    public void setCPU(String cpu) {
        this.notebook.cpu = cpu;
    }

    @Override
    public void setRam(int ram) {
        this.notebook.ram = ram;
    }

    @Override
    public void setHardDrive(String hardDrive) {
        this.notebook.hardDrive = hardDrive;
    }

    @Override
    public void setChassis(String chassis) {
        this.notebook.chassis = chassis;
    }

    @Override
    public Computer getComputer() {
        return this.notebook;
    }
}

 

posted @   平安喜乐×  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示