C++设计模式之抽象工厂模式

//抽象工厂模式,提供一个创建一系列相关或者相互依赖对象的接口,二无需制定他们
//具体的;类
#include<iostream>
using namespace std;

class List_7
{
public:
    virtual void product() {};
    virtual void sell() {};
};

class VIVO_7 :public List_7
{
public:
    void product()
    {
        cout << "生产一部vivo x7" << endl;
    }
    void sell()
    {
        cout << "售出一部vivo X7" << endl;
    }
};

class APPLE_7:public List_7
{
public:
    void product()
    {
        cout << "生产一部iPhone7" << endl;
    }
    void sell()
    {
        cout << "售出一部iPhone7" << endl;
    }
};

class List_PLUS7
{
public:
    virtual void product() {};
    virtual void sell() {};
};

class VIVO_PLUS7 :public List_PLUS7
{
public:
    void product()
    {
        cout << "生产一部vivoplus x7" << endl;
    }
    void sell()
    {
        cout << "售出一部vivo x7 plus" << endl;
    }
};

class APPLE_PLUS7 :public List_PLUS7
{
    void product()
    {
        cout << "生产一部iphone 7plus" << endl;
    }
    void sell()
    {
        cout << "售出一部iphone 7plus" << endl;
    }
};

class IFactory
{
public:
    virtual List_7* createList7() { return 0; }
    virtual List_PLUS7* createList7plus() { return 0; }
};

class VIVO_Factory :public IFactory
{
public:
    List_7* createList7()
    {
        return (new VIVO_7);
    }

    List_PLUS7* createList7plus()
    {
        return (new VIVO_PLUS7);
    }
};

class APPLE_Factory :public IFactory
{
public:
    List_7* createList7()
    {
        return (new APPLE_7);
    }

    List_PLUS7* createList7plus()
    {
        return (new APPLE_PLUS7);
    }
};

int main()
{
    IFactory* factory = new VIVO_Factory;
    List_7* vivox7 = factory->createList7();
    vivox7->product();
    vivox7->sell();
    cout << endl;

    List_PLUS7* vivox7plus = factory->createList7plus();
    vivox7plus->product();
    vivox7plus->sell();
    cout << endl;

    IFactory* apple_factory = new APPLE_Factory;
    List_7* APPLE7 = apple_factory->createList7();
    APPLE7->product();
    APPLE7->sell();
    cout << endl;

    List_PLUS7* APPLE7PLUS = apple_factory->createList7plus();
    APPLE7PLUS->product();
    APPLE7PLUS->sell();

    system("pause");
    return 0;
}

运行结果为:

生产一部vivo x7
售出一部vivo X7

生产一部vivoplus x7
售出一部vivo x7 plus

生产一部iPhone7
售出一部iPhone7

生产一部iphone 7plus
售出一部iphone 7plus
请按任意键继续. . .

很简单,没有什么可说的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值