所有产品类的对象,只能由工厂来创建
此处,所有汤都由厨房创建
产品类
#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();
}