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

建造者模式(二)

时间:2022-10-10 08:57:50浏览次数:29  
标签:ComputerBuilder string cb void 建造 模式 computer public

#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,public
From: https://www.cnblogs.com/qiuyutingyyds/p/16774378.html

相关文章

  • 一起学习设计模式:备忘录模式——软件的“后悔药”
    备忘录模式——软件的“后悔药”备忘录是一种行为设计模式,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态,并将其保存下来。备忘录模式就像是软件中的“后悔药......
  • 单例模式C++
    [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。  #include<iostream>#include<string>#include<string.h>usingnamespac......
  • 设计模式-行为型模式之模板方法
    定义抽象基类,规范接口内部方法执行顺序在进阶篇中,没专门提过抽象基类,在这里顺便就提一下抽象基类的核心特征:不能被直接实例化相反,抽象基类和元类一样,一般都被当......
  • 抽象工厂模式C++
    [实验任务一]:人与肤色使用抽象工厂模式,完成下述产品等级结构:   #include<iostream>usingnamespacestd;//抽象产品类——Man类classMan{public:vi......
  • 建造者模式java
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机......
  • 建造者模式C++
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机......
  • 原型模式C++
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。#include<iostre......
  • 02@Docker网络介绍及网络模式的使用
    文章目录​​Docker网络的介绍​​​​一、Docker网络原理​​​​1、docker网络介绍​​​​2、Docker网络原理​​​​二、docker网络基础​​​​【网络命名空间】​​​......
  • 单例模式
    publicclassSingleton{privatestaticclassSingletonHolder{privatestaticfinalSingletonINSTANCE=newSingleton();}privateS......
  • 面试官:工厂方法模式是什么?
    真正的大师永远怀着一颗学徒的心吃不了学习的苦就要吃生活的苦文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目......