目录
多态案例二 ——制作饮品
案例描述:
制作饮品大致流程均为:煮水 - 冲泡 - 倒入杯中 - 加入辅料
利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶水
//制作饮品类
class MakeDrinks
{
public :
virtual void ZhuShui() = 0;
virtual void ChongPao() = 0;
virtual void DaoRuCup() = 0;
virtual void AddFuliao() = 0;
void MakeDrink()
{
ZhuShui();
ChongPao();
DaoRuCup();
AddFuliao();
}
};
//制作咖啡类
class MakeCoffee : public MakeDrinks
{
void ZhuShui()
{
cout << "将矿泉水煮沸" << endl;
}
void ChongPao()
{
cout << "冲泡咖啡" << endl;
}
void DaoRuCup()
{
cout << "将咖啡倒入杯中" << endl;
}
void AddFuliao()
{
cout << "加入糖和牛奶" << endl;
}
};
//制作茶水
class MakeTea : public MakeDrinks
{
void ZhuShui()
{
cout << "将山泉水煮沸" << endl;
}
void ChongPao()
{
cout << "冲泡茶水" << endl;
}
void DaoRuCup()
{
cout << "将茶水倒入茶盏" << endl;
}
void AddFuliao()
{
cout << "加入枸杞" << endl;
}
};
//制作函数
//void DoDrink(MakeDrinks& makedrink)
//{
// makedrink.MakeDrink();
//}
//或者:
void DoDrink(MakeDrinks * makedrinks)//MakeDrinks * makedrink = new MakeCoffee
{
makedrinks->MakeDrink();
delete makedrinks;//释放堆区数据
}
void test51()
{
//MakeCoffee mc1;
//DoDrink(mc1);
DoDrink(new MakeCoffee);
cout << "---------------" << endl;
//MakeTea mt1;
//DoDrink(mt1);
DoDrink(new MakeTea);
}
int main51()
{
test51();
system("pause");
return 0;
}
(哔哩哔 哩黑马程序员 C++教程 学习笔记,如有侵权请联系删除)