简单工厂模式
#include <iostream>
using namespace std;
//具体产品类型
typedef enum _ProductType
{
ProductTypeA,
ProductTypeB
}ProductType;
//产品抽象类
class Product
{
public:
virtual ~Product(){};
virtual void show() = 0;
};
//产品A
class ProductA : public Product
{
public:
virtual ~ProductA(){};
void show(){ cout<<"ProductA"<<endl;}
};
//产品B
class ProductB : public Product
{
public:
virtual ~ProductB(){};
void show(){ cout<<"ProductB"<<endl;}
};
//简单工厂类
class Factory
{
public:
Product *CreateProduct(ProductType pType)
{
switch (pType)
{
case ProductTypeA:
{
return new ProductA();
}
case ProductTypeB:
{
return new ProductB();
}
default:
{
return NULL;
}
}
}
};
int main()
{
Factory *pFactory = new Factory();
pFactory->CreateProduct(ProductTypeA)->show();
pFactory->CreateProduct(ProductTypeB)->show();
delete pFactory;
return 0;
}
不属于GOF23种模式之一,其实就是根据产品类型(即类型区别)去创建实际产品