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