计算机组装

 

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

实验要求:

1.  画出对应的类图;

 

2.  提交源代码;

#include<iostream>

using namespace std;

#include<string>

class Computer

{

private:

string host;     

string internal; 

string harddisk; 

public:

void setHost(string host)

{

    this->host = host;

}

void setInternal(string internal)

{

    this->internal = internal;

}

void setHarddisk(string harddisk)

{

    this->harddisk = harddisk;

}

string getHost()

{

    return host;

}

string getInternal()

{

    return internal;

}

string getHarddisk()

{

    return harddisk;

}

};

 

class ComputerBuilder

{

public:

virtual void buildHost()=0;

virtual void buildInternal()=0;

virtual void buildHarddisk()=0;

Computer getComputer()

{

    return computer;

}

protected:

Computer computer;

};

 

class Desktop : public ComputerBuilder

{

public:

 

void buildHost()

{

    computer.setHost("台式机主机");

}

 

void buildInternal()

{

    computer.setInternal("台式机内存");

}

 

void buildHarddisk()

{

    computer.setHarddisk("台式机硬盘");

}

 

};

 

class Laptop : public ComputerBuilder

{

public:

 

void buildHost()

{

    computer.setHost("笔记本主机");

}

 

void buildInternal()

{

    computer.setInternal("笔记本内存");

}

 

void buildHarddisk()

{

    computer.setHarddisk("笔记本硬盘");

}

 

};

 

class Worker

{

private:

ComputerBuilder *cb;

public:

void setComputerBuilder(ComputerBuilder *cb)

{

    this->cb = cb;

}

Computer construct()

{

    cb->buildHost();

    cb->buildInternal();

    cb->buildHarddisk();

    return cb->getComputer();

}

};

 

int main()

{

string t;

cout << "请输入电脑类型:";

cin >> t;

Worker *worker = new Worker();

if (!t.compare("Desktop")) {

    ComputerBuilder * cb = new Desktop();

    worker->setComputerBuilder(cb);

 

}

else

{

    ComputerBuilder * cb = new Laptop();

    worker->setComputerBuilder(cb);

}

Computer  computer = worker->construct();

cout << "部件组成:" << endl;

cout << computer.getHost() << endl;

cout << computer.getInternal() << endl;

cout << computer.getHarddisk() << endl;

}

posted @ 2024-10-29 15:52  涨涨涨张  阅读(5)  评论(0编辑  收藏  举报