
#include <iostream>
#include <string>
using namespace std;
/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料
利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*/
/*基类*/
class AbstractDrinking
{
public:
//抽象类制作饮品
//煮水
virtual void boilWater() = 0;
//冲泡
virtual void brewMethods() = 0;
//倒入杯中
virtual void pourCup() = 0;
//加入辅料
virtual void pourSeasonings() = 0;
// 规定流程
void makeDrinking() {
boilWater();
brewMethods();
pourCup();
pourSeasonings();
}
};
// 制作咖啡
class MakeCaffe : public AbstractDrinking
{
public:
virtual void boilWater() {
cout << "煮水" << endl;
}
virtual void brewMethods() {
cout << "冲泡咖啡" << endl;
}
virtual void pourCup() {
cout << "倒入杯中" << endl;
}
virtual void pourSeasonings() {
cout << "加糖和牛奶" << endl;
}
};
//冲茶叶
class MakeTea : public AbstractDrinking
{
public:
virtual void boilWater() {
cout << "煮水" << endl;
}
virtual void brewMethods() {
cout << "冲泡茶叶" << endl;
}
virtual void pourCup() {
cout << "倒入杯中" << endl;
}
virtual void pourSeasonings() {
cout << "加柠檬" << endl;
}
};
//业务函数
void DoWork(AbstractDrinking* drink) {
drink->makeDrinking();
delete drink;
}
void test01() {
DoWork(new MakeCaffe);
cout << "----------" << endl;
DoWork(new MakeTea);
}
int main() {
test01();
system("pause");
return 0;
}