#include <iostream>
using namespace std;
// 是一个功能集合组成的抽象类
//抽象显卡
class AbstractDisplay {
public:
virtual void show() = 0;
};
//抽象内存
class AbstractStorage {
public:
virtual void store() = 0;
};
//抽象cpu
class AbstractCpu {
public:
virtual void calc() = 0;
};
//电脑
class AbstractComputer {
public:
virtual AbstractDisplay* createDisplay() = 0;
virtual AbstractStorage* createStorage() = 0;
virtual AbstractCpu* createCpu() = 0;
};
//inter 系列
class interDisplay:public AbstractDisplay {
public:
virtual void show() {
cout << "inter 显卡" << endl;
}
};
class interStorage:public AbstractStorage{
public:
virtual void store() {
cout << "inter 内存" << endl;
}
};
class interCpu:public AbstractCpu {
public:
virtual void calc() {
cout << "inter 计算器" << endl;
}
};
//inter 电脑生产
class InterComputer:public AbstractComputer{
public:
virtual AbstractDisplay* createDisplay()
{
return new interDisplay;
}
virtual AbstractStorage* createStorage()
{
return new interStorage;
}
virtual AbstractCpu* createCpu()
{
return new interCpu;
}
};
//nvidia 系列
class nvidiaDisplay :public AbstractDisplay {
public:
virtual void show() {
cout << "nvidia 显卡" << endl;
}
};
class nvidiaStorage :public AbstractStorage {
public:
virtual void store() {
cout << "nvidia 内存" << endl;
}
};
class nvidiaCpu :public AbstractCpu {
public:
virtual void calc() {
cout << "nvidia 计算器" << endl;
}
};
//nvidia 电脑生产
class nvidiaComputer :public AbstractComputer {
public:
virtual AbstractDisplay* createDisplay()
{
return new nvidiaDisplay;
}
virtual AbstractStorage* createStorage()
{
return new nvidiaStorage;
}
virtual AbstractCpu* createCpu()
{
return new nvidiaCpu;
}
};
int main03()
{
AbstractComputer* computer = NULL;
AbstractDisplay* display = NULL;
AbstractStorage* storage = NULL;
AbstractCpu* cpu = NULL;
computer = new InterComputer;
display = computer->createDisplay();
storage = computer->createStorage();
cpu = computer->createCpu();
display->show();
storage->store();
cpu->calc();
delete computer;
delete display;
delete storage;
delete cpu;
computer = new nvidiaComputer;
display = computer->createDisplay();
storage = computer->createStorage();
cpu = computer->createCpu();
display->show();
storage->store();
cpu->calc();
delete computer;
delete display;
delete storage;
delete cpu;
return 0;
}
抽象工厂模式
最新推荐文章于 2024-09-15 16:31:23 发布