/*创建对象时不会对客户端暴露创建逻辑,通过使用一个共同的接口(工厂)来创建对象
简单工厂:一个工厂->多个产品
抽象工厂:多个工厂->多个产品*/
#include<iostream>
using namespace std;
typedef enum{BenzType, BmwType} carType;
class Car
{
public:
virtual void car() = 0;
};
class Benz : public Car
{
public:
void car()
{
cout<<"Benz car."<<endl;
}
};
class Bmw : public Car
{
public:
void car()
{
cout<<"Bmw car."<<endl;
}
};
class CarFactory
{
public:
Car* createCar(carType type)
{
switch(type)
{
case BenzType:
return new Benz();
case BmwType:
return new Bmw();
default:
return NULL;
}
return NULL;
}
};
int main()
{
CarFactory factory;
Car* benz = factory.createCar(BenzType); //统一的接口创建对象
Car* bmw = factory.createCar(BmwType);
benz->car();
bmw->car();
delete benz;
benz = NULL;
delete bmw;
bmw = NULL;
return 0;
}
08-03
08-03
08-03