案例描述
制作饮品的大致流程为:煮水->冲泡->倒入杯中->加入辅料
利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶。
一个接口,多种形态。
代码示例
#include <iostream>
using namespace std;
//基类
class Abstruct
{
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 Abstruct
{
void Boil()
{
cout << "煮矿泉水" <<endl;
}
void Brew()
{
cout << "冲泡咖啡 " <<endl;
}
void PourInCup()
{
cout << "倒入杯中" <<endl;
}
void PutSomething()
{
cout <<"加入糖和牛奶" <<endl;
}
};
//泡茶
class Tea:public Abstruct
{
void Boil()
{
cout << "煮自来水" <<endl;
}
void Brew()
{
cout << "冲泡茶叶 " <<endl;
}
void PourInCup()
{
cout << "倒入杯中" <<endl;
}
void PutSomething()
{
cout <<"加入柠檬" <<endl;
}
};
void test(Abstruct *a)
{
a->makeDrink();
delete a;
}
int main()
{
//制作咖啡
test(new Coffee);
cout << "--------------------------" <<endl;
//泡茶
test(new Tea);
return 0;
}
输出结果