定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例
在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method)
需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程
假设有一个工厂,他能生产出A、B两种产品。当客户需要产品的时候一定要告诉共产是哪种产品,是A还是B。当新增加一种新产品的时候,那么就要去修改工厂的类。
#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;
}