软件设计实验5:建造者模式
实验5:建造者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解建造者模式的动机,掌握该模式的结构;
2、能够利用建造者模式解决实际问题。
[实验任务一]:计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
实验要求:
1.画出对应的类图;
2. 提交源代码;
- 1.Builder
- public abstract class Builder {
- Computer computer = new Computer();
- abstract public void buildZhuJi();
- abstract public void buildYinPan();
- abstract public void buildCpu();
- abstract public void buildNeiCun();
- public Compture getCompture(){
- return compture;
- }
- }
- public class Compture {
- private String cpu;
- private String neiCun;
- private String yinPan;
- private String zhuJi;
- public String getZhuJi() {
- return zhuJi;
- }
- public void setZhuJi(String zhuJi) {
- this.zhuJi = zhuJi;
- }
- public String getYinPan() {
- return yinPan;
- }
- public void setYinPan(String yinPan) {
- this.yinPan = yinPan;
- }
- public String getNeiCun() {
- return neiCun;
- }
- public void setNeiCun(String neiCun) {
- this.neiCun = neiCun;
- }
- public String getCpu() {
- return cpu;
- }
- public void setCpu(String cpu) {
- this.cpu = cpu;
- }
- }
- public class Factory {
- private Builder comptureKind;
- public void setCompture(Builder kind) {
- this.comptureKind = kind;
- }
- public Compture construct(){
- comptureKind.buildCpu();
- comptureKind.buildYinPan();
- comptureKind.buildZhuJi();
- comptureKind.buildNeiCun();
- return comptureKind.getCompture();
- }
- }
- public class LapBuilder extends Builder{
- @Override
- public void buildZhuJi() {
- compture.setZhuJi("LZJ");
- }
- @Override
- public void buildYinPan() {
- compture.setYinPan("LYP");
- }
- @Override
- public void buildCpu() {
- compture.setCpu("LC");
- }
- @Override
- public void buildNeiCun() {
- compture.setNeiCun("LNC");
- }
- }
- ④ Store
- public class Store {
- public static void main(String[] args) {
- Builder lap;
- Factory factory=new Factory();
- for (int i = 0; i < 2; i++) {
- if(i==1)
- lap = new LapBuilder();
- else
- lap=new TaiShiBuilder();
- factory.setCompture(lap);
- factory.construct();
- System.out.println(lap.getCompture().getCpu());
- System.out.println(lap.getCompture().getNeiCun());
- System.out.println(lap.getCompture().getYinPan());
- System.out.println(lap.getCompture().getZhuJi());
- }
- }
- }
- public class TaiShiBuilder extends Builder{
- @Override
- public void buildZhuJi() {
- compture.setZhuJi("TZJ");
- }
- @Override
- public void buildYinPan() {
- compture.setYinPan("TYP");
- }
- @Override
- public void buildCpu() {
- compture.setCpu("TC");
- }
- @Override
- public void buildNeiCun() {
- compture.setNeiCun("TNC");
- }
- }
- #include "stdafx.h"
- using namespace std;
- class Compture {
- private:
- string cpu;
- string neiCun;
- string yinPan;
- string zhuJi;
- public:
- string getZhuJi() {
- return zhuJi;
- }
- void setZhuJi(string z) {
- zhuJi = z;
- }
- string getYinPan() {
- return yinPan;
- }
- void setYinPan(string y) {
- yinPan = y;
- }
- string getNeiCun() {
- return neiCun;
- }
- void setNeiCun(string n) {
- neiCun = n;
- }
- string getCpu() {
- return cpu;
- }
- void setCpu(string c) {
- cpu = c;
- }
- };
- class Builder {
- public:
- Compture* compture = new Compture();
- virtual void buildZhuJi() = 0;
- virtual void buildYinPan() = 0;
- virtual void buildCpu() = 0;
- virtual void buildNeiCun() = 0;
- public:
- Compture* getCompture(){
- return compture;
- }
- };
- class Factory {
- private:
- Builder* comptureKind;
- public:
- void setCompture(Builder* kind) {
- comptureKind = kind;
- }
- Compture* construct(){
- comptureKind->buildCpu();
- comptureKind->buildYinPan();
- comptureKind->buildZhuJi();
- comptureKind->buildNeiCun();
- return comptureKind->getCompture();
- }
- };
- class LapBuilder :public Builder{
- public:
- void buildZhuJi() {
- compture->setZhuJi("LZJ");
- }
- void buildYinPan() {
- compture->setYinPan("LYP");
- }
- void buildCpu() {
- compture->setCpu("LC");
- }
- void buildNeiCun() {
- compture->setNeiCun("LNC");
- }
- };
- class TaiShiBuilder :public Builder{
- public:
- void buildZhuJi() {
- compture->setZhuJi("TZJ");
- }
- void buildYinPan() {
- compture->setYinPan("TYP");
- }
- void buildCpu() {
- compture->setCpu("TC");
- }
- void buildNeiCun() {
- compture->setNeiCun("TNC");
- }
- };
- int main()
- {
- Builder* lap;
- Factory* factory = new Factory();
- for (int i = 0; i < 2; i++) {
- if (i == 1)
- lap = new LapBuilder();
- else
- lap = new TaiShiBuilder();
- factory->setCompture(lap);
- factory->construct();
- cout << lap->getCompture()->getCpu()<<endl;
- cout << lap->getCompture()->getNeiCun()<<endl;
- cout << lap->getCompture()->getYinPan()<<endl;
- cout << lap->getCompture()->getZhuJi() << endl;
- }
- system("pause");
- return 0;
- }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)