12.7.5 多态案例-制作饮品
程序员文章站
2022-03-07 20:19:31
12.7.5 多态案例-制作饮品制作饮品大致都是四个步骤:煮水 - 冲泡 - 倒入杯中 - 加入辅料不同的是,制作咖啡时是冲泡咖啡,加入的辅料是牛奶制作茶时,冲泡的时茶叶,加入的辅料是柠檬我们写一个多态案例模拟这一过程。首先创建一个虚基类,四个步骤都是纯虚函数,还有一个总的制作步骤。class AbstractDrink{public://煮水virtual void Boil() = 0;//冲泡virtual void Brew() = 0;//倒入杯中...
12.7.5 多态案例-制作饮品
制作饮品大致都是四个步骤:
- 煮水 - 冲泡 - 倒入杯中 - 加入辅料
不同的是,
- 制作咖啡时是冲泡咖啡,加入的辅料是牛奶
- 制作茶时,冲泡的时茶叶,加入的辅料是柠檬
我们写一个多态案例模拟这一过程。
首先创建一个虚基类,四个步骤都是纯虚函数,还有一个总的制作步骤。
class AbstractDrink
{
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 AbstractDrink
{
public:
//煮水
virtual void Boil()
{
cout << "煮纯净水" << endl;
}
//冲泡
virtual void Brew()
{
cout << "冲泡咖啡" << endl;
}
//倒入杯中
virtual void PourInCup()
{
cout << "倒入杯中" << endl;
}
//加入辅料
virtual void PutSomething()
{
cout << "加入糖" << endl;
}
};
最后我们创建茶的制作过程:
这里面重写了基类的纯虚函数。
//制作茶
class Tea :public AbstractDrink
{
public:
//煮水
virtual void Boil()
{
cout << "煮山泉水" << endl;
}
//冲泡
virtual void Brew()
{
cout << "冲泡茶叶" << endl;
}
//倒入杯中
virtual void PourInCup()
{
cout << "倒入杯中" << endl;
}
//加入辅料
virtual void PutSomething()
{
cout << "加入柠檬" << endl;
}
};
下面调用以下试试:
void DoWork(AbstractDrink *abs)
{
abs->MakeDrink();
delete abs;
}
int main()
{
DoWork(new Coffee);
cout << "===============" << endl;
DoWork(new Tea);
}
运行结果完全符合预期:
本文地址:https://blog.csdn.net/qq_32513033/article/details/107300662