/*
* 多态案例二-制作饮品
* 案例描述:
* 制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料
* 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶
*/
#include<iostream>
#include<string>
using namespace std;
//抽象制作饮品
class AbstractDrinking {
public:
//烧水
virtual void Boil() = 0;
//冲泡
virtual void Brew() = 0;
//倒入杯中
virtual void PourInCup() = 0;
//加入辅料
virtual void PutSomething() = 0;
//规定流程
void MakeDrink() {
Boil();
Brew();
PourInCup();
PutSomething();
}
};
//制作咖啡
class Coffee : public AbstractDrinking {
public:
//烧水
virtual void Boil() {
cout << "煮农夫山泉!" << endl;
}
//冲泡
virtual void Brew() {
cout << "冲泡咖啡!" << endl;
}
//倒入杯中
virtual void PourInCup() {
cout << "将咖啡倒入杯中!" << endl;
}
//加入辅料
virtual void PutSomething() {
cout << "加入牛奶!" << endl;
}
};
//制作茶水
class Tea : public AbstractDrinking {
public:
//烧水
virtual void Boil() {
cout << "煮自来水!" << endl;
}
//冲泡
virtual void Brew() {
cout << "冲泡茶叶!" << endl;
}
//倒入杯中
virtual void PourInCup() {
cout << "将茶水倒入杯中!" << endl;
}
//加入辅料
virtual void PutSomething() {
cout << "加入枸杞!" << endl;
}
};
//业务函数
void DoWork(AbstractDrinking* drink)
{
drink->MakeDrink();
delete drink;
}
void test03() {
DoWork(new Coffee);
cout << "--------------" << endl;
DoWork(new Tea);
}
int main()
{
test03();
cout<<"Hello World!"<<endl;
system("pause");
return 0;
}
C++学习第九十三篇
最新推荐文章于 2024-07-14 13:39:50 发布