Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1145940
  • 博文数量: 139
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1712
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 23:10
个人简介

每天进步一点点。

文章分类

全部博文(139)

文章存档

2015年(3)

2014年(11)

2013年(25)

2011年(1)

2009年(3)

2008年(29)

2007年(45)

2006年(22)

分类: C/C++

2013-03-29 22:26:57

设计模式C++实现(1)——简单工厂模式
通过封装继承来降低程序的耦合度,设计模式使得程序更加的灵活,易修该,易于复用。

简单工厂是在工厂类中做判断,从而创造相应的产品。

举个例子:有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核。客户需要什么样的处理器核,一定要显示地告诉生产工厂。
下面给出一种实现方案。
 

#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 
阅读(4828) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~