推荐文章: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
;
}