代码
#include<iostream>
using namespace std;
#include <string>
class CPU//CPU抽象类(接口)
{
public:
virtual void Calculate() = 0;
};
class VidioCard//显卡抽象类(接口)
{
public:
virtual void Display() = 0;
};
class Memory//内存条抽象类(接口)
{
public:
virtual void Storage() = 0;
};
class Computer
{
public:
Computer(CPU* cpu, VidioCard* vc, Memory* mem)
{
m_cpu = cpu;
m_vc = vc;
m_mem = mem;
}
void DoWork()
{
m_cpu->Calculate();
m_vc->Display();
m_mem->Storage();
}
~Computer()//delete computer对象后自动调用
{
cout << "析构函数" << endl;
if (m_cpu != NULL)
{
delete m_cpu;
m_cpu = NULL;
}
if (m_vc != NULL)
{
delete m_vc;
m_mem = NULL;
}
}
private:
CPU* m_cpu;
VidioCard* m_vc;
Memory* m_mem;
};
//Intel厂商//分成三个有利于维护和管理
class IntelCPU :public CPU
{
public:
void Calculate()
{
cout << "Intel的CPU计算起来了" << endl;
}
};
class IntelVidioCard :public VidioCard
{
public:
void Display()
{
cout << "Intel的VidioCard显示起来了" << endl;
}
};
class IntelMemory :public Memory
{
public:
void Storage()
{
cout << "Intel的Memory存储起来了" << endl;
}
};
//Lenovo厂商
class LenovoCPU :public CPU
{
public:
void Calculate()
{
cout << "Lenovo的CPU计算起来了" << endl;
}
};
class LenovoVidioCard :public VidioCard
{
public:
void Display()
{
cout << "Lenovo的VidioCard显示起来了" << endl;
}
};
class LenovoMemory :public Memory
{
public:
void Storage()
{
cout << "Lenovo的Memory存储起来了" << endl;
}
};
void test01()
{
//第一台电脑零件
CPU* cpu = new IntelCPU;
VidioCard* vc = new IntelVidioCard;
Memory* mem = new IntelMemory;
//组装第一台电脑
Computer* computer1 = new Computer(cpu, vc, mem);
computer1->DoWork();
delete computer1;
cout << "---------------------" << endl;
//配置第二台电脑
Computer* computer2 = new Computer(new LenovoCPU, new LenovoVidioCard, new LenovoMemory);
computer2->DoWork();
delete computer2;
cout << "---------------------" << endl;
//配置第三台电脑
Computer* computer3 = new Computer(new IntelCPU, new IntelVidioCard, new LenovoMemory);
computer3->DoWork();
delete computer3;
}
int main()
{
test01();
system("pause");
return 0;
}