构建模式
参考链接:
简介
UML类图
代码示例
#include <iostream>
#include <string>
using namespace std;
// 电脑构建
class ComputerBuild
{
public:
~ComputerBuild() { cout << "~ComputerBuild" << endl; };
virtual void BuildCPU() = 0;
virtual void BuildGPU() = 0;
virtual void BuildBoard()= 0;
};
// 构造神州电脑
class HaseeComputerBuild : public ComputerBuild
{
public:
~HaseeComputerBuild() { cout << "~HaseeComputerBuild" << endl; };
void BuildCPU() override { cout << "build Hasee CPU" << endl; }
void BuildGPU() override { cout << "build Hasee GPU" << endl; }
void BuildBoard() override { cout << "build Hasee Board" << endl; }
};
// 构造联想电脑
class LenovoComputerBuild : public ComputerBuild
{
public:
~LenovoComputerBuild() { cout << "~LenovoComputerBuild" << endl; };
void BuildCPU() override { cout << "build Lenovo CPU" << endl; }
void BuildGPU() override { cout << "build Lenovo GPU" << endl; }
void BuildBoard() override { cout << "build Lenovo Board" << endl; }
};
class Director
{
public:
Director(ComputerBuild *builder) { m_pBuilder = builder; }
~Director() { cout << "~Director" << endl; };
void Create() {
m_pBuilder->BuildCPU();
m_pBuilder->BuildGPU();
m_pBuilder->BuildBoard();
}
private:
ComputerBuild *m_pBuilder;
};
int main(int argc, char *argv[])
{
HaseeComputerBuild *hasee = new HaseeComputerBuild();
LenovoComputerBuild *lenovo = new LenovoComputerBuild();
Director *director = nullptr;
director = new Director(hasee);
director->Create();
delete director;
director = nullptr;
director = new Director(lenovo);
director->Create();
delete director;
director = nullptr;
delete hasee;
delete lenovo;
return 0;
}