工厂模式是创建型模式的一种,又可以根据需求的复杂度分为简单工厂和抽象工厂。
简单工厂用于创建具有公共基类的对象,抽象工厂则可以创建具有不同基类的对象。
一般采用静态工厂方法来实现更为elegant。
下面给出UML类图和C++的示例代码:
#ifndef __FACTORY_H__
#define __FACTORY_H__
#include "Product.h"
class CFactory
{
public:
static IProduct* CreateProduct(EPRODUCT_TYPE eType)
{
switch (eType)
{
case EPRODUCT_TYPE_TA:
return new CProductTA;
case EPRODUCT_TYPE_TB:
return new CProductTB;
default:
return NULL;
}
}
};
#endif // __FACTORY_H__#ifndef __PRODUCT_H__
#define __PRODUCT_H__
enum EPRODUCT_TYPE
{
EPRODUCT_TYPE_TA,
EPRODUCT_TYPE_TB,
};
class IProduct
{
protected:
IProduct() {}
virtual ~IProduct() {}
public:
virtual void Test() = 0;
};
class CProductTA : public IProduct
{
public:
CProductTA() {}
~CProductTA() {}
public:
void Test() {printf("CProductTA::Test()\n");}
};
class CProductTB : public IProduct
{
public:
CProductTB() {}
~CProductTB() {}
public:
void Test() {printf("CProductTB::Test()\n");}
};
#endif // __PRODUCT_H__#include "stdafx.h"
#include "Factory.h"
int _tmain(int argc, _TCHAR* argv[])
{
CFactory::CreateProduct(EPRODUCT_TYPE_TA)->Test();
CFactory::CreateProduct(EPRODUCT_TYPE_TB)->Test();
getchar();
return 0;
}