# 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:
	void Boil()
	{
		cout << "煮农夫山泉" << endl;

	}
	void Brew()
	{
		cout << "冲泡咖啡" << endl;
	}

	void PourInCup()
	{
		cout << "倒入杯中" << endl;
	}
	void PutSomething()
	{
		cout << "加入牛奶。糖等" << endl;
	}
};

void dowork(AbstractDrinking *abs)
{
	abs->makeDrink();
	delete abs;
}

void test01()
{
	dowork(new Coffee);
}

int main()
{
	test01();
	system("pause");
	return 0;
}