简单工厂模式是对若干种对象的创建过程进行了集中管理。
这种模式一般用工厂生产产品来理解。使用时,用户首先创建或获取工厂对象,然后调用工程对象的创建方法去生产产品。
以下代码对产品分类,Products
是产品基类,ProductA
和ProductB
是具体产品类。
#include <iostream>
using namespace std;
enum ProductType{
ProductTypeA,
ProductTypeB,
};
class Products
{
public:
virtual void Display() = 0;
virtual ~Products(){}
};
class ProductA:public Products
{
public:
void Display()
{
cout<<__PRETTY_FUNCTION__<<endl;
}
};
class ProductB:public Products
{
public:
void Display()
{
cout<<__PRETTY_FUNCTION__<<endl;
}
};
以下代码定义工厂类
class Factory
{
public:
Products* CreateProduct(ProductType Type)
{
switch (Type) {
case ProductTypeA:
return new ProductA();
break;
case ProductTypeB:
return new ProductB();
break;
default:
return nullptr;
break;
}
}
};
以下代码用工厂类对象分别生产两类产品对象并使用(调用Display
)
int main(void){
Factory* factory = new Factory();
Products* productA = factory->CreateProduct(ProductTypeA);
productA->Display();
Products* productB = factory->CreateProduct(ProductTypeB);
productB->Display();
delete factory;
delete productA;
delete productB;
return 0;
}
输出
virtual void ProductA::Display()
virtual void ProductB::Display()
网友评论