设计模式3-Factory模式
来源:互联网 发布:跨数据库关联查询 编辑:程序博客网 时间:2024/05/16 09:28
/**********************************************************************************************************************/
* Factory模式:工厂模式
* 我们可以将Factory理解成生产制造模式,即给定一个特定值(字符串/ 枚举), 产生不同子类的对象
* 意图: 通过一个统一的接口, 产生一系列的子类的对象
* 适用性: 产生一系列对象, 这些对象具有某些相同属性和行为,即可抽象出一个父类;
/**********************************************************************************************************************/
下面的例子是一个水果的工厂模式
#include <stdio.h>
class CFruit //父类
{
public:
virtual void What() = 0;
};
class CApple : public CFruit //子类1
{
public:
virtual void What()
{
printf("我是一个苹果\n");
}
};
class CPear : public CFruit //子类2
{
public:
virtual void What()
{
printf("我是一只雪梨\n");
}
};
class CBanana : public CFruit //子类3
{
public:
virtual void What()
{
printf("我是一条香蕉\n");
}
};
enum eFruitType{APPLE=1, PEAR, BANANA};
class CFruitFactory //工厂模式-----类的统一产生接口类
{
public:
CFruit *GetFruitInstance(eFruitType type) //产生函数接口
{
printf("工厂正在生产水果...\n");
switch(type)
{
case APPLE:
return new CApple();
case PEAR:
return new CPear();
case BANANA:
return new CBanana();
default:
return NULL;
}
}
};
int main()
{
CFruitFactory factory;
CFruit *fruit;
printf("你想吃什么水果?\n");
printf("1 苹果, 2 雪梨, 3 香蕉\n");
int nType = 0;
scanf("%d", &nType);
fruit = factory.GetFruitInstance(eFruitType(nType));
if(fruit == NULL)
{
printf("没有这种水果。");
return 0;
}
fruit->What();
return 0;
}
- 设计模式3-Factory模式
- [设计模式]Factory模式
- 设计模式------Factory 模式
- 设计模式:Factory模式
- 设计模式--Factory模式
- 设计模式之Factory
- 设计模式之Factory
- 设计模式之Factory
- 设计模式之Factory
- 设计模式之Factory
- Factory Method设计模式
- 设计模式之Factory
- 设计模式之Factory
- 设计模式之Factory
- 设计模式之Factory
- SharpDevelop设计模式(Factory)
- 设计模式之Factory
- 设计模式之Factory
- 软件文档知多少?
- INFORMIX ISM备份管理器配置过程
- 马可.安东尼-悲剧英雄
- 用PostMessage或SendMessage发送结构体指针 .
- INFORMIX RSS原理和配置
- 设计模式3-Factory模式
- INFORMIX RSS故障切换
- INFORMIX HDR切换步骤
- RAC的OCR和VOTING DISK备份方法
- 目前进展中存在的问题,绝对不能当成惯性来执行。
- Oracle Validated Configurations 安装使用 说明
- J2SE - Enumeration vs Iterator
- android应用开发之Activity的简单布局切换
- DB2 purescale VS Oracle RAC