zoukankan      html  css  js  c++  java
  • 软件设计——建造者模式之计算机部件 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;
    }

    3、运行截图

  • 相关阅读:
    5. 字符串提取
    4.字符串连接
    3. 忽略大小写的字符串比较
    2.Calendar类的使用
    1.==和equals()
    50.使用DOM4J解析XML文件
    C# json提取多层嵌套到数组
    打开SDK Manager检查Android SDK下载和更新失败的解决方法
    (微信API接口开发) 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
    javascript里面的数组,json对象,动态添加,修改,删除示例
  • 原文地址:https://www.cnblogs.com/ltw222/p/15368366.html
Copyright © 2011-2022 走看看