工廠方法模式 C++實現(xiàn)

//
//  main.cpp
//  factory_method_pattern
//
//  Created by apple on 2019/3/10.
//  Copyright ? 2019年 apple. All rights reserved.
//

#include <iostream>

class IProduct
{
public:
    virtual void create() = 0;
    virtual ~IProduct() {}
};

class Error:public IProduct
{
public:
    void create()
    {
        std::cout<<"Error"<<std::endl;
    }
};
class Box:public IProduct
{
public:
    void create()
    {
        std::cout<<"Box"<<std::endl;
    }
};
class Phone:public IProduct
{
public:
    void create()
    {
        std::cout<<"Phone"<<std::endl;
    }
};
class Pen:public IProduct
{
public:
    void create()
    {
        std::cout<<"Pen"<<std::endl;
    }
};
class IFactory
{
public:
    virtual IProduct *GetProduct() = 0;
    virtual ~IFactory() {}
};
class FactoryA:public IFactory
{
public:
    IProduct *GetProduct();
};
class FactoryB:public IFactory
{
public:
    IProduct *GetProduct();
};

IProduct *FactoryA::GetProduct()
{
    return new Box();//A工廠只能生產(chǎn)Box
}
IProduct *FactoryB::GetProduct()
{
    return new Phone();//B工廠只能生產(chǎn)Phone
}


int main(int argc, const char * argv[]) {
    IProduct *product;
    IFactory *factory;
    
    factory= new FactoryA();
    product = factory->GetProduct();
    product->create();
    delete product;
    product = NULL;
    delete factory;
    factory = NULL;
    
    factory = new FactoryB();
    product = factory->GetProduct();
    product->create();
    delete product;
    product = NULL;
    
    delete factory;
    factory = NULL;
    return 0;
}
Box
Phone
Program ended with exit code: 0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容