#include <stdio.h>
#include <iostream>
using namespace std;
//定义男鞋虚基类
class ManShoes
{
public:
virtual void Show() = 0;
};
//A类男鞋
class ManShoesA:public ManShoes
{
public:
void Show()
{
cout <<"This is ManShoes A"<<endl;
}
};
//B类男鞋
class ManShoesB:public ManShoes
{
public:
void Show()
{
cout <<"This is ManShoes B"<<endl;
}
};
//定义女鞋虚基类
class WomanShoes
{
public:
virtual void Show() = 0;
};
//A类女鞋
class WomanShoesA:public WomanShoes
{
public:
void Show()
{
cout <<"This is WomanShoes A"<<endl;
}
};
//B类女鞋
class WomanShoesB:public WomanShoes
{
public:
void Show()
{
cout <<"This is WomanShoes B"<<endl;
}
};
//工厂类基类
class Factory
{
public:
virtual ManShoes* ProduceManShoes() = 0;
virtual WomanShoes* ProduceWomanShoes() = 0;
};
//专门用于生产A类男鞋的工厂
class ShoesFactoryA:public Factory
{
public:
ManShoes* ProduceManShoes()
{
return new ManShoesA();
}
WomanShoes* ProduceWomanShoes()
{
return new WomanShoesA();
}
};
//专门用于生产B类男鞋的工厂
class ShoesFactoryB:public Factory
{
public:
ManShoesB* ProduceManShoes()
{
return new ManShoesB();
}
WomanShoes* ProduceWomanShoes()
{
return new WomanShoesB();
}
};
int main()
{
Factory *pf = new ShoesFactoryA();
ManShoes *pMan=pf->ProduceManShoes();
pMan->Show();
WomanShoes *pWoman = pf->ProduceWomanShoes();
pWoman->Show();
pf = new ShoesFactoryB();
pMan = pf->ProduceManShoes();
pMan->Show();
pWoman = pf->ProduceWomanShoes();
pWoman->Show();
system("pause");
return 0;
}