您的位置:首页 > 其它

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

2014-08-18 22:58 211 查看
推荐文章:http://www.jellythink.com/archives/62

类图:



类解读:

Factory:定义一个工厂

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

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

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

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

实现代码:

#include <iostream>

using
namespace
std;

 

class
Product

{

public:

    virtual
void
Show()
=
0;

};

 

class
ProductA
:
public
Product

{

public:

    void
Show()

    {

        cout<<
"I'm ProductA"<<endl;

    }

};

 

class
ProductB
:
public
Product

{

public:

    void
Show()

    {

        cout<<
"I'm ProductB"<<endl;

    }

};

 

class
Factory

{

public:

    virtual
Product
*CreateProduct()
=
0;

};

 

class
FactoryA
:
public
Factory

{

public:

    Product
*CreateProduct()

    {

        return
new
ProductA
();

    }

};

 

class
FactoryB
:
public
Factory

{

public:

    Product
*CreateProduct()

    {

        return
new
ProductB
();

    }

};

 

int
main(int
argc
,
char
*argv
[])

{

    Factory
*factoryA
=
new
FactoryA
();

    Product
*productA
=
factoryA->CreateProduct();

    productA->Show();

 

    Factory
*factoryB
=
new
FactoryB
();

    Product
*productB
=
factoryB->CreateProduct();

    productB->Show();

 

    if
(factoryA
!=
NULL)

    {

        delete
factoryA;

        factoryA
=
NULL;

    }

 

    if
(productA
!=
NULL)

    {

        delete
productA;

        productA
=
NULL;

    }

 

    if
(factoryB
!=
NULL)

    {

        delete
factoryB;

        factoryB
=
NULL;

    }

 

    if
(productB
!=
NULL)

    {

        delete
productB;

        productB
=
NULL;

    }

    return
0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: