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、运行截图

  • 相关阅读:
    终于和Java碰面了
    Servlet学习-MVC开发模式
    Servlet学习-数据库的操作
    Servlet学习-sendRedirect()和forward()
    Servlet学习-request
    Servlet学习-乱码解决方案
    Servlet学习-response
    Servlet学习-页面设置不缓存
    软件构造 第一章第二节 软件开发的质量属性
    软件构造 第二章 第一节 软件生命周期和版本控制
  • 原文地址:https://www.cnblogs.com/ltw222/p/15368366.html
Copyright © 2011-2022 走看看