
#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;
}