首页 > 其他分享 >设计模式实验五

设计模式实验五

时间:2023-10-30 10:45:58浏览次数:36  
标签:String Computer void computer 实验 Override 设计模式 public

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

 

实验5:建造者模式

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

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

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

 

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

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

实验要求:

1. 画出对应的类图;

 

 

2. 提交源代码;

package qb;

public class Computer {
   private String cpu;
   private String memory;
   private String hardDisk;
   private String motherboard;
   private String type;

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

   public void setMemory(String memory) {
       this.memory = memory;
   }

   public void setHardDisk(String hardDisk) {
       this.hardDisk = hardDisk;
   }
   public void setMotherboard(String motherboard) {
       this.motherboard = motherboard;
   }

   public void setType(String type) {
       this.type = type;
   }

   @Override
   public String toString() {
       return "Computer{" +
               "cpu='" + cpu + '\'' +
               ", memory='" + memory + '\'' +
               ", hardDisk='" + hardDisk + '\'' +
               ", motherboard='" + motherboard + '\'' +
               ", type='" + type + '\'' +
               '}';
   }
}

 

package qb;

public class ComputerAssemblyFactory {
   public static Computer assembleComputer(ComputerBuilder computerBuilder) {
       computerBuilder.buildCPU();
       computerBuilder.buildMemory();
       computerBuilder.buildHardDisk();
       computerBuilder.buildMotherboard();
       return computerBuilder.getComputer();
   }
}

 

package qb;

public interface ComputerBuilder {
   void buildCPU();
   void buildMemory();
   void buildHardDisk();
   void buildMotherboard();
   Computer getComputer();
}

 

package qb;

public class DesktopBuilder implements ComputerBuilder {
   private Computer computer;

   public DesktopBuilder() {
       computer = new Computer();
       computer.setType("Desktop");
   }

   @Override
   public void buildCPU() {
       computer.setCpu("Desktop CPU");
   }

   @Override
   public void buildMemory() {
       computer.setMemory("Desktop Memory");
   }

   @Override
   public void buildHardDisk() {
       computer.setHardDisk("Desktop Hard Disk");
   }

   @Override
   public void buildMotherboard() {
       computer.setMotherboard("Desktop Motherboard");
   }

   @Override
   public Computer getComputer() {
       return computer;
   }
}

 

package qb;

public class LaptopBuilder implements ComputerBuilder {
   private Computer computer;

   public LaptopBuilder() {
       computer = new Computer();
       computer.setType("Laptop");
   }

   @Override
   public void buildCPU() {
       computer.setCpu("Laptop CPU");
   }

   @Override
   public void buildMemory() {
       computer.setMemory("Laptop Memory");
   }

   @Override
   public void buildHardDisk() {
       computer.setHardDisk("Laptop Hard Disk");
   }

   @Override
   public void buildMotherboard() {
       computer.setMotherboard("Laptop Motherboard");
   }

   @Override
   public Computer getComputer() {
       return computer;
   }
}

 

package qb;

public class Main {
   public static void main(String[] args) {
       ComputerBuilder laptopBuilder = new LaptopBuilder();
       Computer laptop = ComputerAssemblyFactory.assembleComputer(laptopBuilder);
       System.out.println(laptop);

       ComputerBuilder desktopBuilder = new DesktopBuilder();
       Computer desktop = ComputerAssemblyFactory.assembleComputer(desktopBuilder);
       System.out.println(desktop);
   }
}

 

 

运行截图

 

 

3.注意编程规范。

标签:String,Computer,void,computer,实验,Override,设计模式,public
From: https://www.cnblogs.com/azwz/p/17797233.html

相关文章

  • 设计模式实验四
    软件设计                 石家庄铁道大学信息学院 实验4:抽象工厂模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解抽象工厂模式的动机,掌握该模式的结构;2、能够利用抽象工厂模式解决实际问题。 [实验任务一]:人与肤色使用抽象工厂模......
  • C++实验心得
    C++类文件写通讯录系统生成项目,创建类文件...调出工作区,manager属性类文件运用string型变量的找不到此数据类型问题,需要在对应.h文件定义上命名空间并引用<string>头文件类文件引用主函数全局变量main.cpp externinta; //导出 ...Class_one.cpp inta; //去ex......
  • 重学面向对象,体会设计模式
    先上图(学长今晚讲得好激情,就像哈佛大学cs50的老师~~~~)图一让你明白,在Java帝国,你有多么渺小 回忆一下学长讲课的思路~Driver这个类里面封装了很多各种各样的方法,包括接学生回家,包括开车的时速,里面包括了,司机本身的一个职责,以及车的一个功能,但问一个问题,如果今天司机的大巴......
  • 实验1-实验任务6
    #include<stdio.h>#include<math.h>intmain(){ doublex,ans; while(scanf_s("%lf",&x)!=EOF) { ans=pow(x,365); printf("%.2f的365次方:%.2f\n",x,ans); printf("\n"); } return0;}  ......
  • 实验1-实验任务5
    1#include<stdio.h>2intmain()3{4intyear;5year=(float)(static_cast<double>(1000000000/365/24/60)/60)+0.5;6printf("10亿秒约等于%d年\n",year);7return0;8} ......
  • 实验1-实验任务3
    1#include<stdio.h>2intmain()3{4charans1,ans2;//用于保存用户输入的答案5printf("每次课前认真预习、课后及时复习了没?(输入y或Y表示有,输入n或N表示没有):");6ans1=getchar();//从键盘输入一个字符,赋值给ans17getchar();......
  • 设计模式—创建型模式之原型模式
    设计模式—创建型模式之原型模式原型模式(PrototypePattern)用于创建重复的对象,同时又能保证性能。本体给外部提供一个克隆体进行使用。比如我们做一个SjdwzMybatis,用来操作数据库,从数据库里面查出很多记录,其中很多记录改变很少。每次查数据库,把所有数据都封装一个对象,然后返回......
  • 如何将设计模式责任链模式运用到工作当中
    (文章目录)......
  • 第四十章 触摸屏实验
    原文:http://www.openedv.com/thread-345225-1-1.html触摸屏是在显示屏的基础上,在屏幕或屏幕上方分布一层与屏幕大小相近的传感器形成的组合器件。触摸和显示功能由软件控制,可以独立也可以组合实现,用户可以通过侦测传感器的触点再配合相应的软件实现触摸效果。目前最常用的触摸屏......
  • Proxy Facade 设计模式运行时的工作原理介绍
    ProxyFacade设计模式是一个强大的工具,它可以帮助我们创建一个简单的代理外观类,以便根据方法和属性的配置来访问系统的各种功能。在这篇文章中,我们将深入探讨ProxyFacade模式的运行时工作原理,并提供一些实际示例来帮助您更好地理解。什么是ProxyFacade设计模式?ProxyFaca......