您的位置:首页 > 其它

设计模式-创建型模式-抽象工厂

2013-05-12 22:42 471 查看


具体实现



//AbstarctProductA
//生产红豆冰激凌

//红豆冰激凌
class IHongDou_Ice{
public:
//IHongDou_Ice(){};
virtual ~IHongDou_Ice(){}

};

//绿豆冰激淋
class ILvDou_Ice{
public:
virtual ~ILvDou_Ice(){}
};

//具体实现。
//为了方便直接将cpp和在一起了
//具体实现分开,减少编译依赖

//具体的A工厂的A口味红豆
class HongDouIce_A : public IHongDou_Ice{
public:
HongDouIce_A(){}
virtual ~HongDouIce_A(){}

};
//具体的A工厂的A口味绿豆
class LvDouIce_A : public ILvDou_Ice{
public:
LvDouIce_A(){}
virtual ~LvDouIce_A(){}
};

//具体的B工厂的B口味红豆
class HongDouIce_B : public IHongDou_Ice{
public:
HongDouIce_B(){}
virtual ~HongDouIce_B(){}
};
//具体的B工厂的B口味绿豆
class LvDouIce_B : public ILvDou_Ice{
public:
LvDouIce_B(){}
virtual ~LvDouIce_B(){}
};


#include "IIce.h"

//生产冰激淋

//AB冰激凌总厂
class IABIceFactory{
public:
virtual ~IABIceFactory(){};
virtual IHongDou_Ice*	HongDou_Ice() = 0;	//生产红豆冰激凌
virtual ILvDou_Ice*		LvDou_Ice() = 0;	//生产绿豆冰激凌
};

//我将具体实现类放在了同一个h中
//具体实现需要分开
//减少编译依赖

//A口味冰激凌工厂
class HongDouA_IceFactory : public IABIceFactory{
public:
HongDouA_IceFactory(){}
virtual IHongDou_Ice*	HongDou_Ice(){ return new HongDouIce_A(); }	//生产A口味的红豆冰激凌
virtual ILvDou_Ice*		LvDou_Ice(){ return new LvDouIce_A(); }	//生产A口味的绿豆冰激淋

virtual ~HongDouA_IceFactory(){}
};

//B口味冰激凌工厂
class ILvDouB_IceFactory : public IABIceFactory{
public:
ILvDouB_IceFactory(){}
virtual IHongDou_Ice*	HongDou_Ice(){ return new HongDouIce_B(); }	//生产A口味的红豆冰激凌
virtual ILvDou_Ice*		LvDou_Ice(){ return new LvDouIce_B(); }	//生产A口味的绿豆冰激淋

virtual ~ILvDouB_IceFactory(){}
};


缺点如图看到的

创建的AbstractFacetory只能创建绿豆和红豆,如果想添加更多的,就要从新增加接口和编译。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: