简单工厂模式

 

#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种模式之一,其实就是根据产品类型(即类型区别)去创建实际产品

posted @ 2014-04-08 19:59  jadeshu  阅读(63)  评论(0编辑  收藏  举报