工厂方法模式

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值