所有产品类的对象,只能由工厂来创建
此处,所有汤都由厨房创建


产品类
#include <QDebug>
enum ChooseMenu
{
sichuan,
anhui,
};
class CookBook{//菜谱
public:
//炖排骨
virtual void cook_Paigu()=0;
virtual ~CookBook(){}
};
class SicBook:public CookBook{
public:
void cook_Paigu(){
qDebug()<<"四川红烧排骨";
}
};
class AnhuiBook:public CookBook{
public:
void cook_Paigu(){
qDebug()<<"安徽炖排骨";
}
};
工厂类
//厨房
class Kitchen{
public:
CookBook* Create_paigu(ChooseMenu type)
{
//做哪个菜
switch (type)
{
case sichuan:
return new SicBook();
case anhui:
return new AnhuiBook();
default:
return NULL;
}
}
};
怎么调用
void main()
{
//创建厨房
Kitchen* m_Kitchen = new Kitchen();
//从厨房创建川菜排骨对象
CookBook* sic = m_Kitchen->Create_paigu(sichuan);
sic->cook_Paigu();
//从厨房创建安徽菜排骨对象
CookBook* m_anhui= m_Kitchen->Create_paigu(anhui);
m_anhui->cook_Paigu();
}
本文介绍了使用C++编程实现的产品类通过工厂类创建的示例,展示了如何通过Kitchen类根据不同菜单类型生成SichuanBook或AnhuiBook,并调用相应的烹饪方法。

被折叠的 条评论
为什么被折叠?



