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;
}
类图:
类解读:
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;
}
相关文章推荐
- 工厂方法模式(Factory Method Pattern) 应用篇(上)
- 工厂方法模式(Factory Method Pattern)应用篇(直接使用工厂方法)
- C#设计模式——工厂方法模式(Factory Method Pattern)
- 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 二、工厂方法模式(Factory Method Pattern)
- 解读设计模式----工厂方法模式(FactoryMethod Pattern)
- (C++实现)——工厂方法模式(Factory Method Pattern)
- Net设计模式实例之工厂方法模式( Factory Method Pattern)
- C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(英语:Factory method pattern)
- 24种设计模式--工厂方法模式【Factory Method Pattern】
- 工厂方法模式(Factory Method Pattern) 应用篇(下)
- 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- 极速理解设计模式系列:9.工厂方法模式(Factory Method Pattern)
- 设计模式--工厂方法模式(Factory Method Pattern)