设计模式-建造者模式-c++
今天写了设计模式的建造者模式
#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; }