软件设计——建造者模式之计算机部件 c++

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 @   yblll  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示