举个例子:有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂。
下面给出一种实现方案。
#include <iostream>
using namespace std;
enum CoreType
{
CORE_A,
CORE_B
};
class SingleCore
{
public:
virtual void Show() = 0;
};
/*
* A 型号单核
*/
class SingleCoreA: public SingleCore
{
public:
void Show()
{
cout<<"show SingleCoreA"<<endl;
}
};
/*
* B 型号单核
*/
class SingleCoreB: public SingleCore
{
public:
void Show()
{
cout<<"show SingleCoreB"<<endl;
}
};
/*
* 唯一的工厂,可以生产单核 两种型号的处理器
*/
class Factory
{
public:
SingleCore* CreateSingleCore(CoreType ctype)
{
switch(ctype)
{
case CORE_A:
return new SingleCoreA();
case CORE_B:
return new SingleCoreB();
default:
return NULL;
}
}
};
int main()
{
Factory *pstFactory;
SingleCore *pstSingleCore;
pstFactory = new Factory();
/*
* 生产A核
*/
pstSingleCore = pstFactory->CreateSingleCore(CORE_A);
pstSingleCore->Show();
system("pause");
/*
* 生产B核
*/
pstSingleCore = pstFactory->CreateSingleCore(CORE_B);
pstSingleCore->Show();
/*
* 生产A核
*/
pstSingleCore = pstFactory->CreateSingleCore(CORE_A);
pstSingleCore->Show();
/*
* 生产A核
*/
pstSingleCore->Show();
system("pause");
/*
* 生产B核
*/
pstSingleCore = pstFactory->CreateSingleCore(CORE_B);
pstSingleCore->Show();
return 0;
}
运行结果:
show SingleCoreA
请按任意键继续. . .
show SingleCoreB
show SingleCoreA
show SingleCoreA
请按任意键继续. . .
show SingleCoreB
Press any key to continue
注:相关教程知识阅读请移步到C++教程频道。










