抽象工厂

这里写图片描述

#include <iostream>


class AbstractProductA
{
public:
    virtual ~AbstractProductA(){}
protected:
    AbstractProductA(){}
};

class AbstractProductB
{
public:
    virtual ~AbstractProductB(){}
protected:
    AbstractProductB(){}
};

class ProductA1:public AbstractProductA
{
public:
    ProductA1(){ std::cout << "ProductA1...."<< std::endl;}
    ~ProductA1(){}
};

class ProductA2:public AbstractProductA
{
public:
    ProductA2(){std::cout << "ProductA2...."<< std::endl;}
    ~ProductA2(){}
};
class ProductB1:public AbstractProductB
{
public:
    ProductB1(){std::cout << "ProductB1...."<< std::endl;}
    ~ProductB1(){}
};

class ProductB2:public AbstractProductB
{
public:
    ProductB2(){std::cout << "ProductB2...."<< std::endl;}
    ~ProductB2(){}
};

//-----------------------------------------------------------------

class AbstractFactory
{
public:
    virtual AbstractProductA* CreateProductA()=0;
    virtual AbstractProductB* CreateProductB()=0;
    virtual ~AbstractFactory(){}
protected:
    AbstractFactory(){}
};


class CreateFactory1 : public AbstractFactory
{
public:
    CreateFactory1(){}
    ~CreateFactory1(){}

    AbstractProductA *CreateProductA(){ return new ProductA1;}
    AbstractProductB *CreateProductB(){ return new ProductB1;}
};

class CreateFactory2:public AbstractFactory
{
public:
    CreateFactory2(){}
    ~CreateFactory2(){}

    AbstractProductA *CreateProductA(){ return new ProductA2;}
    AbstractProductB *CreateProductB(){ return new ProductB2;}
};





int main()
{
    AbstractFactory *f1 = new CreateFactory1();

    f1->CreateProductA();
    f1->CreateProductB();

    AbstractFactory *f2 = new CreateFactory2();
    f2->CreateProductA();
    f2->CreateProductB();

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值