1.作用:基类为算法提供模板骨架,控制骨架中每一部分的调用时间和顺序,骨架每一部分的实现又设置为虚函数,允许派生类进行个性化重写
2.基本组成:基类带有公有化的模板方法,保护级别或者私有级别的实现(虚)函数
3.代码实现
以制作饮料为例子,基类提供一个制作流程:
- 加入调味粉
- 加入纯净水
- 搅拌
- 制冷/加热/常温
派生类 咖啡 / 可乐提供虚函数部分实现的重写
#include<iostream>
using namespace std;
class Drink {
public:
virtual ~Drink() {}
void makeDrink() {
addPowder();
addWater();
stir();
changeTmp();
}
protected:
void addWater() {
cout << "加入纯净水" << endl;
}
void stir() {
cout << "搅拌均匀" << endl;
}
private:
virtual void addPowder() = 0;
virtual void changeTmp() = 0;
};
class Cola:public Drink {
private:
void addPowder() {
cout << "加入可乐粉" << endl;
}
void changeTmp() {
cout << "制冷" << endl;
}
};
class Coffee :public Drink {
private:
void addPowder() {
cout << "加入咖啡粉" << endl;
}
void changeTmp() {
cout << "加热" << endl;
}
};
int main() {
Drink* cola = new Cola();
Drink* coffee = new Coffee();
cola->makeDrink();
cout << "==============" << endl;
coffee->makeDrink();
delete cola;
delete coffee;
return 0;
}
作笔记使用~~如果有不足或错误还请补充或者指正,多谢!!!!!