通过封装继承来降低程序的耦合度,设计模式使得程序更加的灵活,易修该,易于复用。
简单工厂是在工厂类中做判断,从而创造相应的产品。
举个例子:有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂。
下面给出一种实现方案。
#include
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"<
}
};
/*
* B 型号单核
*/
class SingleCoreB: public SingleCore
{
public:
void Show()
{
cout<<"show SingleCoreB"<
}
};
/*
* 唯一的工厂,可以生产单核 两种型号的处理器
*/
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
阅读(4888) | 评论(0) | 转发(0) |