//
// 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ù)。