C++_核心编程_多态案例二-制作饮品

发布于:2025-06-11 ⋅ 阅读:(24) ⋅ 点赞:(0)

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