04.工厂方法模式【FACTORY METHOD PATTERN】

来源:互联网 发布:巴拉密 知乎 编辑:程序博客网 时间:2024/05/22 15:32

推荐文章:http://www.jellythink.com/archives/62

类图:



类解读:

Factory:定义一个工厂

FactoryA,FactoryB:工厂中的不同的两条生产线。

Product:需要生产的产品类型定义(接口)

ProductA,ProductB:需生产的具体产品

相当于在一个工厂中,创建多条生产流水线,来生产自定义的产品,只是当前的一条生产流水线功能单一(相对于抽象工厂而言)。


实现代码:

#include <iostream>
usingnamespacestd;
 
classProduct
{
public:
    virtualvoidShow()=0;
};
 
classProductA:publicProduct
{
public:
    voidShow()
    {
        cout<<"I'm ProductA"<<endl;
    }
};
 
classProductB:publicProduct
{
public:
    voidShow()
    {
        cout<<"I'm ProductB"<<endl;
    }
};
 
classFactory
{
public:
    virtualProduct*CreateProduct()=0;
};
 
classFactoryA:publicFactory
{
public:
    Product*CreateProduct()
    {
        returnnewProductA();
    }
};
 
classFactoryB:publicFactory
{
public:
    Product*CreateProduct()
    {
        returnnewProductB();
    }
};
 
intmain(intargc,char*argv[])
{
    Factory*factoryA=newFactoryA();
    Product*productA=factoryA->CreateProduct();
    productA->Show();
 
    Factory*factoryB=newFactoryB();
    Product*productB=factoryB->CreateProduct();
    productB->Show();
 
    if(factoryA!=NULL)
    {
        deletefactoryA;
        factoryA=NULL;
    }
 
    if(productA!=NULL)
    {
        deleteproductA;
        productA=NULL;
    }
 
    if(factoryB!=NULL)
    {
        deletefactoryB;
        factoryB=NULL;
    }
 
    if(productB!=NULL)
    {
        deleteproductB;
        productB=NULL;
    }
    return0;
}

0 0