与简单工厂的区别在于: 简单工厂在工厂类内部通过函数case进行分配不同的产品,工厂方法模式采用一种产品一个工厂形式,通过基类工厂调用创建对应的产品。
class IFactoryBase
{
public:
IFactoryBase(void);
virtual ~IFactoryBase(void);
public:
virtual IProductBase* CreateProduct() = 0;
};
class IProductBase
{
public:
IProductBase(void);
~IProductBase(void);
public:
virtual void SetProductInfo() = 0;
};
class CFactoryA : public IFactoryBase
{
public:
CFactoryA(void);
~CFactoryA(void);
public:
virtual IProductBase* CreateProduct();
};
IProductBase* CFactoryA::CreateProduct()
{
return new CProductA();
}
class CProductA : public IProductBase
{
public:
CProductA(void);
~CProductA(void);
public:
void SetProductInfo(){}
};
class CFactoryB : public IFactoryBase
{
public:
CFactoryB(void);
~CFactoryB(void);
public:
virtual IProductBase* CreateProduct();
};
IProductBase* CFactoryB::CreateProduct()
{
return new CProductB();
}
class CProductB : public IProductBase
{
public:
CProductB(void);
~CProductB(void);
public:
virtual void SetProductInfo(){}
};
int _tmain(int argc, _TCHAR* argv[])
{
IFactoryBase *pFactory = new CFactoryA();
if (NULL != pFactory)
{
IProductBase *pProductBase = pFactory->CreateProduct();
if (NULL != pProductBase)
{
pProductBase->SetProductInfo();
}
delete pProductBase;
}
delete pFactory;
return 0;
}