行为型-模板方法模式
//模板方法模式
#include <iostream>
using namespace std;
//
class DrinkTemplate{
public:
virtual void BoildWater() = 0; //煮水
virtual void Brew() = 0; //冲泡
virtual void PourInCup() = 0; //倒入杯中
virtual void AddSomething() = 0; //加辅助料
//模板方法
void Make(){
BoildWater();
Brew();
PourInCup();
AddSomething();
}
};
//冲泡咖啡
class Coffee : public DrinkTemplate{
virtual void BoildWater(){
cout << "煮山泉水..." << endl;
}
virtual void Brew(){
cout << "冲泡咖啡..." << endl;
}
virtual void PourInCup(){
cout << "咖啡倒入杯中..." << endl;
}
virtual void AddSomething(){
cout << "加糖,加牛奶..." << endl;
}
};
//冲泡咖啡
class Tea : public DrinkTemplate{
virtual void BoildWater(){
cout << "煮自来水..." << endl;
}
virtual void Brew(){
cout << "冲泡茶叶..." << endl;
}
virtual void PourInCup(){
cout << "茶叶倒入杯中..." << endl;
}
virtual void AddSomething(){
cout << "加糖,加柠檬,加生姜..." << endl;
}
};
void test01(){
Tea* tea = new Tea;
tea->Make();
Coffee* coffee = new Coffee;
coffee->Make();
}
int main()
{
test01();
system("pause");
return 0;
}