首页 > 编程语言 >建造者模式C++

建造者模式C++

时间:2022-10-09 22:13:18浏览次数:54  
标签:ComputerBuilder string cb void 建造 模式 computer C++ public

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

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

 

 

 

#include<iostream>
#include<string>
using namespace std;
//产品类——Computer类
class Computer{
private:
    string CPU;
    string RAM;
    string Hard;
    string Host;
public:
    string getCPU(){
        return CPU;
    }
    string getRAM(){
        return RAM;
    }
    string getHard(){
        return Hard;
    }
    string getHost(){
        return Host;
    }
    void setCPU(string cpu){
        CPU=cpu;
    }
    void setRAM(string ram){
        RAM=ram;
    }
    void setHard(string hard){
        Hard=hard;
    }
    void setHost(string host){
        Host=host;
    }
};
//抽象建造者类——ComputerBuilder类
class ComputerBuilder{
protected:
    Computer computer;
public:
    virtual void buildCPU()=0;
    virtual void buildRAM()=0;
    virtual void buildHard()=0;
    virtual void buildHost()=0;
    Computer getComputer(){
        return computer;
    }
};
//具体建造者类——LaptopComputerBuilder类
class LaptopComputerBuilder:public ComputerBuilder{
public:
    void buildCPU() {
        computer.setCPU("安装笔记本CPU");
    }
    void buildRAM() {
        computer.setRAM("安装笔记本内存");
    }
    void buildHard() {
        computer.setHard("安装笔记本硬盘");
    }
    void buildHost() {
        computer.setHost("安装笔记本主机");
    }
};
//具体建造者类——DesktopComputerBuilder类
class DesktopComputerBuilder:public ComputerBuilder{
public:
    void buildCPU() {
        computer.setCPU("安装台式机CPU");
    }
    void buildRAM() {
        computer.setRAM("安装台式机内存");
    }
    void buildHard() {
        computer.setHard("安装台式机硬盘");
    }
    void buildHost() {
        computer.setHost("安装台式机主机");
    }
};
//指挥者类——Director类
class Director{
private:
    ComputerBuilder* cb;
public:
    void setComputerBuilder(ComputerBuilder *c){
        cb=c;
    }
    Computer construct(){
        cb->buildCPU();
        cb->buildRAM();
        cb->buildHard();
        cb->buildHost();
        return cb->getComputer();
    }
};
//测试类
int main(){
    ComputerBuilder* cb=NULL;
    int i;
    cout<<"请选择:1.笔记本 2、台式机"<<endl;
    cin>>i;
    if(i==1){
        cb=new LaptopComputerBuilder();
    }else if(i==2){
        cb=new DesktopComputerBuilder();
    }else{
        cout<<"输入无效!";
    }
    Director* dir=new Director();
    dir->setComputerBuilder(cb);
    Computer computer=dir->construct();
    cout<<"计算机组成:"<<endl;
    cout<<computer.getCPU()<<endl;
    cout<<computer.getRAM()<<endl;
    cout<<computer.getHard()<<endl;
    cout<<computer.getHost()<<endl;
    delete cb;
    delete dir;
    return 0;
}

 

 

 

 

 

 

标签:ComputerBuilder,string,cb,void,建造,模式,computer,C++,public
From: https://www.cnblogs.com/rongzhang/p/16773875.html

相关文章

  • 原型模式C++
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。#include<iostre......
  • 02@Docker网络介绍及网络模式的使用
    文章目录​​Docker网络的介绍​​​​一、Docker网络原理​​​​1、docker网络介绍​​​​2、Docker网络原理​​​​二、docker网络基础​​​​【网络命名空间】​​​......
  • 单例模式
    publicclassSingleton{privatestaticclassSingletonHolder{privatestaticfinalSingletonINSTANCE=newSingleton();}privateS......
  • 面试官:工厂方法模式是什么?
    真正的大师永远怀着一颗学徒的心吃不了学习的苦就要吃生活的苦文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目......
  • C++入门到理解set/multiset容器、pair对组
    一:基本概念在插入元素的时候会自动排好序,比如插入的是1,3,4,2,打印是1,2,3,4.底层是通过二叉树结构实现的,set容器不允许有重复的元素,但是multiset允许有元素重复。二:构造,遍历,赋值#i......
  • c++模版
    1.什么是模版?生活中比如常用的ppt模版,年终报告模版等,共有的特性通用性、不能直接使用、不是万能的2.c++中的模版c++处理面向对象编程思想还有面向泛型编程,面向泛型编程主要......
  • c++面向对象概述、内存分析、引用、函数
    1.c++内存分区模型c++程序在运行的过程中,内存会被划分为以下四个分区代码区:程序的所有程序的二进制代码,包括注释会被放到此区全局区:存放静态变量、全局变量、常量(字符串常量......
  • C++函数
    目录​​函数作用​​​​函数定义​​​​函数声明​​​​函数调用​​​​函数值传递​​​​函数常见的样式​​​​函数的分文件书写​​函数作用将经常使用的代码封装......
  • C++数据类型
    目录 ​​1.数据类型概述​​​​2.基本的内置类型​​​​整型​​​​实型(浮点型)​​​​字符型​​​​转义字符​​​​字符串型​​​​c风格的字符串​​​​c++风......
  • C++数组
    概述C++支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个......