工厂模式用于创建具有相同接口的一类对象。
基础代码实现逻辑如下:
./h声明文件
//工厂模式实现
//定义工厂生产的产品接口class CcommonCar
{
public:
virtual void run();
void SetCarType(std::string type);
private:
std::string m_CarType;
};
class CsmallCar :public CcommonCar
{
public:
void run();
private:
int m_SeatNum;
int m_Colour;
};
class CFireCar :public CcommonCar
{
public:
void run();
private:
int m_ladderHeight;
int m_WaterPipeLenght;
};
//定义工厂类
class CCarFactory
{
public:
CcommonCar * CreateACar(std::string carType);
};
.cc实现文件
///工厂模式实现
void CcommonCar::run()
{
return;
}
void CcommonCar::SetCarType(std::string type)
{
m_CarType = type;
}
void CsmallCar::run()
{
std::cout << "small car begin to run" << std::endl;
return;
}
void CFireCar::run()
{
std::cout << "Fire car begin to run" << std::endl;
return;
}
CcommonCar * CCarFactory::CreateACar(std::string carType)
{
if (carType.compare("smallCar") == 0)
{
CcommonCar *pCar = new CsmallCar();
pCar->SetCarType(carType);
return pCar;
}
if (carType.compare("fireCar") == 0)
{
CcommonCar *pCar = new CFireCar();
pCar->SetCarType(carType);
return pCar;
}
return nullptr;
}
//main使用方式
int main()
{
//工厂模式测试
CCarFactory myCarFactory;
CcommonCar *pCar = myCarFactory.CreateACar(std::string("smallCar"));
pCar->run();
CcommonCar *pFireCar = myCarFactory.CreateACar(std::string("fireCar"));
pFireCar->run();
}