A工厂只能创建A产品,B工厂只能创建B产品
意思是:宝马只能造宝马,比亚迪只能造比亚迪

此图为引用,忘记引用哪个博主的了
//产品:A,B产品继承于抽象产品
class IProduct //抽象 汽车
{
public:
virtual void show() = 0;
virtual ~IProduct() {}
};
class ProductA : public IProduct //具体产品宝马车
{
public:
void show() { qDebug()<< "ProductA"; }
};
class ProductB : public IProduct //具体产品比亚迪
{
public:
void show() { qDebug() << "ProductB";}
};
//工厂:A,B工厂继承于抽象工厂
class IFactory //抽象工厂
{
public:
virtual ~IFactory() {}
virtual IProduct* createProduct() = 0;
};
class FactoryA : public IFactory //宝马工厂
{
public:
IProduct* createProduct(){ return new ProductA;}
};
class FactoryB : public IFactory //长安工厂
{
public:
IProduct* createProduct(){ return new ProductB;}
};
怎么调用: 划重点,这里
void main(int argc, char *argv[])
{
//先创建宝马厂
IFactory *factory = new FactoryA();
//宝马厂造一辆宝马车
IProduct *product = factory->createProduct();
product->show();
delete factory;
delete product;
//长安工厂造一辆长安
factory = new FactoryB();
product = factory->createProduct();
product->show();
delete factory;
delete product;
}
9601

被折叠的 条评论
为什么被折叠?



