//Factory Pattern
#include
<iostream>
#include
<string>
using
namespace std;
class
Product
{
public
:
~Product()
{
}
virtual void Show() const=0;
protected
:
Product()
{
//cout<<"Product
构造函数"<<endl;
}
};
class
CreateProductA:public Product
{
public
:
CreateProductA()
{
cout<<"
创建产品A"
<<endl;
}
~CreateProductA()
{
}
void Show(void) const
{
cout<<"
显示产品A"
<<endl;
}
};
class
CreateProductB:public Product
{
public
:
CreateProductB()
{
cout<<"
创建产品B"
<<endl;
}
~CreateProductB()
{
}
void Show(void) const
{
cout<<"
显示产品B"
<<endl;
}
};
class
Factory
{
public
:
~Factory()
{
}
virtual Product * CreateProduct(char Data) =0;
protected
:
Factory()
{
}
};
class
ConcreteFactory:public Factory
{
public
:
ConcreteFactory( )
{
}
~ConcreteFactory()
{
}
Product * CreateProduct(char Data)
{
switch(Data)
{
case 'A':
return new CreateProductA();
case 'B':
return new CreateProductB();
default:
return 0;
}
};
};
int
main(void)
{
Factory *fac=new ConcreteFactory();
Product *proA=fac->CreateProduct('A');
proA->Show();
Product *proB=fac->CreateProduct('B');
proA->Show();
return 0;
}
|