模板模式:定义一个算法的步骤,并允许子类为一个或多个步骤提供实现。
模板模式很简单,类图如下:
示例:星巴克做饮料时,都有些固定的步骤。
比如调咖啡的步骤为:1.把水煮沸 2.用沸水冲咖啡粉 3.把咖啡倒进杯子 4.加糖和牛奶
调茶的步骤为:1.把水煮沸 2.用沸水泡茶叶 3.把茶倒进杯子 4. 加柠檬。
两种饮料制作方法固定步骤都一样,不同的是步骤2 和4 ,那么我们可以把步骤做成固定的算法模板,而步骤2 4做成虚拟的方法,让子类不实现。
示例代码如:
class Drink
{
public:
Drink()
{
m_bAdd = true;
}
void PrePareDrink()
{
BoilWater();
Brew();
PourCup();
if (m_bAdd)
{
AddCondiments();
}
}
public:
void BoilWater()
{
cout <<"烧水" <PrePareDrink();
delete pDrink;
pDrink = nullptr;
//
cout <<"//"<SetAdd(false);
pDrink->PrePareDrink();
delete pDrink;
pDrink = nullptr;
return;
}



