设计模式之工厂模式代码实现

工厂模式用于创建具有相同接口的一类对象。

基础代码实现逻辑如下:

./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();
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值