模板方法模式
最后更新于:2022-04-01 20:29:34
## 模式定义:
模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
模板就是一个方法。更具体的说,这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类实现。这可以确保算法的结果保持不变,同时由子类提供部分实现。
## 模式结构:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-30_57c54590dbd73.jpg)
## 举例:
泡咖啡和泡茶步骤与基本相同,定义咖啡和茶的类如下:
~~~
class Coffee
{
public:
void prepareRecipe()
{
boilWater();
brewCoffeeGrinds();
pourInCup();
addSugarAndMilk();
}
void boilWater()
{
cout << "Boiling water" << endl;
}
void brewCoffeeGrinds()
{
cout << "Dripping Coffee through filter" << endl;
}
void pourCup()
{
cout << "Pouring into cup" <
using namespace std;
//定义咖啡因基类
class CaffeineBeverage
{
public:
void prepareRecipe()
{
boilWater();
brew();
pourInCup();
addCondiments();
}
void boilWater()
{
cout << "Boiling water" << endl;
}
void pourInCup()
{
cout << "Pouring into cup" <
';