学习文章
原理
工厂基类,定义创建产品的公共接口。工厂子类,创建具体产品。
示例代码
// 定义产品的ID
typedef enum _Product_ID_{
E_PRODUCT_A,
E_PRODUCT_B
}Product_ID;
// 产品基类,必须包含虚函数,作为公共接口。
class Product{
public:
virtual void Show() = 0;
};
// 产品类
class ProductA: public Product{
public:
void Show(){
std::cout << "Product A" << std::endl;
}
};
class ProductB: public Product{
void Show(){
std::cout << "Product B" << std::endl;
}
};
// 工厂基类,定义创建产品的公共接口
class Factory{
public:
virtual Product * CreateProduct() = 0;
};
// 工厂子类,创建具体产品
class FactoryA : public Factory{
public:
Product * CreateProduct(){
return new ProductA();
}
};
class FactoryB : public Factory{
public:
Product * CreateProduct(){
return new ProductB();
}
};