#include <iostream>
#include <windows.h>
using namespace std;
enum E_CAR_TYPE
{
E_CAR_TYPE_BENZ = 1, // 奔馳
E_CAR_TYPE_BMW = 2, // 寶馬
};
class Car
{
public:
virtual void CreateCar(void) = 0;
};
class BenzCar :public Car // 奔馳車
{
public:
BenzCar()
{
cout <<"BenzCar::Benz()" << endl;
}
virtual void CreateCar(void)
{
cout <<"BenzCar::CreateBenz Car" << endl;
}
~BenzCar()
{
}
};
class BmwCar :public Car // 寶馬車
{
public:
BmwCar()
{
cout <<"BmwCar:Car" << endl;
}
virtual void CreateCar(void)
{
cout << "BmwCar::CreateBmw Car" << endl;
}
};
class Facory
{
public:
Car *CreateSpecifiCar(E_CAR_TYPE eType)
{
Car *pCar = NULL;
switch(eType)
{
case E_CAR_TYPE_BENZ: // 奔馳
{
pCar = new BenzCar();
}
break;
case E_CAR_TYPE_BMW: // 寶馬
{
pCar = new BmwCar();
}
break;
default:
break;
}
return pCar;
}
};
int main()
{
Facory mFactory;
Car* mpCarOne = mFactory.CreateSpecifiCar(E_CAR_TYPE_BENZ);
Car* mpCarTwo = mFactory.CreateSpecifiCar(E_CAR_TYPE_BMW);
mpCarOne->CreateCar();
mpCarTwo->CreateCar();
delete mpCarOne;
delete mpCarTwo;
system("pause");
return 0;
}