首页 > 编程语言 >建造者模式--Java实现

建造者模式--Java实现

时间:2023-10-14 11:00:16浏览次数:55  
标签:Java String -- cb void 建造 CPU computer public

画类图

具体代码实现

//Computer.java
package org.example.design003;

public class Computer {
    public Computer(String CPU, String RAM, String hard, String host) {
        this.CPU = CPU;
        this.RAM = RAM;
        Hard = hard;
        Host = host;
    }

    public Computer(){}

    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;
    }

    private String CPU;
    private String RAM;
    private String Hard;
    private String Host;
}

//ComputerBuilder.java
package org.example.design003;

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;
    }
}

//DesktopComputerBuilder.java
package org.example.design003;

public class DesktopComputerBuilder extends ComputerBuilder{

    @Override
    public void buildCPU() {
        computer.setCPU("安装台式机CPU");
    }

    @Override
    public void buildRAM() {
        computer.setRAM("安装台式机内存");
    }

    @Override
    public void buildHard() {
        computer.setHard("安装台式机硬盘");
    }

    @Override
    public void buildHost() {
        computer.setHost("安装台式机主机");
    }
}

//LaptopComputerBuilder.java
package org.example.design003;

public class LaptopComputerBuilder extends ComputerBuilder {
    @Override
    public void buildCPU() {
        computer.setCPU("安装笔记本CPU");
    }

    @Override
    public void buildRAM() {
        computer.setRAM("安装笔记本内存");
    }

    @Override
    public void buildHard() {
        computer.setHard("安装笔记本硬盘");
    }

    @Override
    public void buildHost() {
        computer.setHost("安装笔记本主机");
    }
}

//Director.java
package org.example.design003;

public class Director {
    private ComputerBuilder cb;
    public void setComputerBuilder(ComputerBuilder c)
    {
        cb=c;
    }
    public Computer construct()
    {
        cb.buildCPU();
        cb.buildRAM();
        cb.buildHard();
        cb.buildHost();
        return cb.getComputer();
    }
}

//Main.java
package org.example.design003;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        ComputerBuilder cb = null;
        System.out.println("请选择:1、笔记本 2、台式机");
        Scanner input=new Scanner(System.in);
        int i=input.nextInt();
        if(i==1) {
            cb=new LaptopComputerBuilder();
        }else if(i==2) {
            cb=new DesktopComputerBuilder();
        }else {
            System.out.println("输入无效!");
        }
        Director dir=new Director();
        dir.setComputerBuilder(cb);
        Computer computer=dir.construct();
        System.out.println("计算机组成:");
        System.out.println(computer.getCPU());
        System.out.println(computer.getRAM());
        System.out.println(computer.getHard());
        System.out.println(computer.getHost());



    }
}

标签:Java,String,--,cb,void,建造,CPU,computer,public
From: https://www.cnblogs.com/liuzijin/p/17763741.html

相关文章

  • 面对危害性的网络谣言,我们就是父母最好的武器
    信息爆炸时代的网络谣言新形势在2023年,电脑办公、手机出行、电视娱乐以及地铁中听耳机已经成为日常。我们的各项活动都深度依赖互联网,让我们在利用这种无处不在的信息源时,不自觉萌生一些习惯:如查阅新闻时会习惯性地多读几条以寻找更丰富的详情,购物时会浏览评论以获取真实的用户......
  • 使用FMC连接SDRAM扩展STM32内存
    1.引脚初始化BSP_SDRAM_GPIO_InitvoidBSP_SDRAM_GPIO_Init(void){RCC_AHB1PeriphClockCmd(FMC_A0_GPIO_CLK,ENABLE);RCC_AHB1PeriphClockCmd(FMC_A1_GPIO_CLK,ENABLE);RCC_AHB1PeriphClockCmd(FMC_A2_GPIO_CLK,ENABLE);RCC_AHB1PeriphClockCmd(FMC_A3......
  • 【触想智能】工业级触摸显示器的分类与应用分享
    工业级触摸显示器是具有触摸功能的工业显示器,常见的触摸方式有电容触摸和电阻触摸。它是应用在工业上的设备,和普通的显示器有着很大的区别。工业级触摸显示器由液晶触摸屏、功能主板、外壳三部分组成,结构用料一般都采用铝合金材质,散热、抗电磁干扰、耐高低温、防尘防水......
  • Vue3| 组合式 API 下的 子传父
    步骤:1.子组件内部通过emit方法触发事件①通过defineEmits编译器宏生成emit方法<script setup>const emit= defineEmits(['get-message'])  //get-message:可以触发的事件</script>②触发自定义事件,并传递参数<script setup>const emit= define......
  • 师生关系
    我印象深刻的老师高中地理老师F老师:有着丰富的教学经验与知识储备,她时常提醒我们对于知识需要理解,切忌死记硬背,并且强调要将已有的知识储备自己整理贯通,形成自己的知识体系。我认为她所传授的学习方法能够适用于未来任何一个学科的学习。而且对于我们日常学习当中的问题,她总能......
  • umich cv-3-1
    UMICHCVNeuralNetwork对于传统的线性分类器,分类效果并不好,所以这节引入了一个两层的神经网络,来帮助我们进行图像分类可以看出它的结构十分简单,x作为输入层,经过max(0,W1*x)到达h隐藏层,再经过W2到达s输出层如果我们对隐藏层的结果进行可视化,我们可以看到如下的图像:相对于之前......
  • Vue3| 组合式 API 下的父传子
    步骤:一、父给子传写死的值1.父组件中给子组件以添加属性的方式传值<script setup>import sonComVue from './son-com.vue'  //局部注册</script> <template><sonComVue message="黑马程序员"></sonComVue></template>2.子组件内部通过pro......
  • LINUX:sqoop连接:ERROR manager.CatalogQueryManager: Failed to list databases com.my
    可见是连接的jar包出现了错误  通过命令发现我的是5.7版本,将驱动jar包替换为5.几的  之后通过命令成功解决......
  • P7600 [APIO2021] 封闭道路
    P7600[APIO2021]封闭道路APIO从CF搬的题,模拟赛又搬了一遍/jy。首先考虑暴力怎么做,即做\(n\)次树形DP,设\(f_{i,0}\)表示强制删掉\((i,fa_i)\)这条边的最小代价,\(f_{i,1}\)表示强制保留\((i,fa_i)\)这条边的最小代价。对于一个点\(u\),在限制度数为\(x\)时,对于......
  • Working with Regular Expression in Python.
    #正则表达式正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。一个正则表达式是一种从左到右匹配主体字符串的模式,常使用缩写的术语“regex”或“regexp”。实验网站:regex101参考:菜鸟正则语法元字符正则表达式起作用主要依赖......