首页 > 其他分享 >建造者模式

建造者模式

时间:2023-11-30 09:22:43浏览次数:42  
标签:String void 建造 System 模式 public computer builder

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

 

实验5:建造者模式

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

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

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

 

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

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

实验要求:

1. 画出对应的类图;

 

 

2. 提交源代码;

Client:

package builder;

import java.util.Scanner;

public class Client {
    public static void main(String[] args) {
        System.out.println("请选择组装的电脑类型:1 笔记本 2 台式机");
        Scanner sc = new Scanner(System.in);
        String type = sc.nextLine();
        if(type.equals("1")) {
            Director director = new Director();
            Builder builder = new Laptop();
            director.setBuilder(builder);
            Computer computer = director.construct();
            System.out.println("组装进行:");
            System.out.println(computer.getCpu());
            System.out.println(computer.getNeichun());
            System.out.println(computer.getYingjian());
            System.out.println(computer.getZhuji());
        }else if(type.equals("2")) {
            Director director = new Director();
            Builder builder = new Desktop();
            director.setBuilder(builder);
            Computer computer = director.construct();
            System.out.println("组装进行:");
            System.out.println(computer.getCpu());
            System.out.println(computer.getNeichun());
            System.out.println(computer.getYingjian());
            System.out.println(computer.getZhuji());
        }
    }
}

 

Bulider:

package builder;

public abstract class Builder {

    protected Computer computer = new Computer();

    public abstract  void buildCpu();

    public abstract  void buildNeichun();

    public abstract  void buildYingpan();

    public abstract void buildZhuji();

    public Computer getResult()
    {
        return computer;
    }
}

 

Computer:

package builder;

public class Computer {
    private String cpu;
    private String neichun;
    private String yingjian;
    private String zhuji;

    public String getCpu() {
        return cpu;
    }

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public String getNeichun() {
        return neichun;
    }

    public void setNeichun(String neichun) {
        this.neichun = neichun;
    }

    public String getYingjian() {
        return yingjian;
    }

    public void setYingjian(String yingjian) {
        this.yingjian = yingjian;
    }

    public String getZhuji() {
        return zhuji;
    }

    public void setZhuji(String zhuji) {
        this.zhuji = zhuji;
    }
}

 

Desktop:


package builder;

public class Desktop extends Builder{
    @Override
    public void buildCpu() {
        computer.setCpu("台式CPU");
    }

    @Override
    public void buildNeichun() {
        computer.setNeichun("台式内存");
    }

    @Override
    public void buildYingpan() {
        computer.setYingjian("台式硬件");
    }

    @Override
    public void buildZhuji() {
        computer.setZhuji("台式主机");
    }
}

 

Laptop:

package builder;

public class Laptop extends Builder{
    @Override
    public void buildCpu() {
        computer.setCpu("笔记本CPU");
    }

    @Override
    public void buildNeichun() {
        computer.setNeichun("笔记本内存");
    }

    @Override
    public void buildYingpan() {
        computer.setYingjian("笔记本硬件");
    }

    @Override
    public void buildZhuji() {
        computer.setZhuji("笔记本主机");
    }
}

 

Director:

package builder;

public class Director {

    public Builder builder;

    public void setBuilder(Builder builder)
    {
        this.builder = builder;
    }

    public Computer construct()
    {
        builder.buildCpu();
        builder.buildZhuji();
        builder.buildNeichun();
        builder.buildYingpan();

        return builder.getResult();
    }
}

 

3.注意编程规范。

标签:String,void,建造,System,模式,public,computer,builder
From: https://www.cnblogs.com/JIANGzihao0222/p/17866507.html

相关文章

  • 命令模式
    [实验任务一]:多次撤销和重复的命令模式某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集合实现多次undo()和redo()操作,可以使用加法运算来模拟实现。1. 提交类图;2.提交源代码;#include<iostream>#include<stack>usingn......
  • 适配器模式
    1模式动机在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。如何应对这种“迁移的变化”?如何既能利用现有对象(老接口)的良好实现,同时又能满足新的应用环境所要求的接口?Adapter模式主要应用于“......
  • 实验6:原型模式
    2.提交源代码(用C++完成);3.注意编程规范。#include<iostream> classVector{private:    int*data;//指向向量数据的指针    intsize;//向量的长度 public:    //构造函数    Vector(intsize){        this->size=size;   ......
  • 实验7:单例模式
     本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1. 画出对应的类图;2.提交源代码;3.注......
  • 实验8:适配器模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解适配器模式的动机,掌握该模式的结构;2、能够利用适配器模式解决实际问题。 [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图;2.提交源代码;3.注意编......
  • 实验9:桥接模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解桥接模式的动机,掌握该模式的结构;2、能够利用桥接模式解决实际问题。 [实验任务一]:两个维度的桥接模式用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。#include<iostream>......
  • 实验10:组合模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解组合模式的动机,掌握该模式的结构;2、能够利用组合模式解决实际问题。 [实验任务一]:组合模式用透明组合模式实现教材中的“文件夹浏览”这个例子。1.文件的执行不需真正实现,只需简单提示即可;2.提交源代码;3.......
  • FPGA 实现SPI 主机双工通信 CS前后肩可调 操作时钟频率可调 ,SPI模式可调,传输位宽可
    1//testbench2`timescale1ns/1ns3modulelcd_spi_m_tb();4regrst_n_i;5regspi_clkx_i;6reg[31:0]spi_data_i;7regspi_start;8regspi_miso_r1,spi_miso_r2;9wirespi_miso_i;10wire[0:0]spi_done;11wir......
  • MFC的CFile类以追加模式写文件
    CFile类的Open函数有CFile::modeNoTruncate模式,该模式是非截断的意思,再配合CFile::modeCreate,意味着如果文件不存在,则创建,如果文件存在,则不会将文件内容清空。当对文件进行追加写入时,有一个小细节就是打开文件模式中虽然添加了这两种OpenFlag,但是文件指针并未移动到末尾,因此追加出......
  • 详解Redis三大集群模式,轻松实现高可用!
    原文:https://zhuanlan.zhihu.com/p/624144774?utm_id=01.Redis集群简介1.1什么是Redis集群Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,R......