10.9每日总结

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

 

实验5:建造者模式

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

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

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

 

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

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

实验要求:

 

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

   }

}

posted @   听着DJ读童话  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示