【c++设计模式】模版模式

行为型模式

14)模版模式

本文主要参考:

https://www.cnblogs.com/qq-361807535/p/6854191.html

模版模式和外观模式有点类似,都是将流程封装起来。但是两者的实现方式和侧重点不太一样。
外观模式实现的是多各类协作共同完成一件事情,因此我们使用一个函数来封装这些操作,(将这个函数放在一个类中)。
模板模式实现的是一个类的多个函数组合完成一件事情。定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。

以做饭为例,不管中餐还是西餐,做饭的步骤都是,一准备好食材,二下锅,三洗碗

class cooking{
public:
    cooking(){}
    virtual void prepareMaterial() = 0; //准备原材料
    virtual void cook() = 0; //做饭
    virtual void washDishes() = 0; //洗碗
};

class ChinesecCooking : public cooking{
public:
    ChinesecCooking():cooking(){}
    void prepareMaterial(){
        cout<<"准备米饭,菜和肉,以及各种调料"<<endl;
    }
    void cook(){
        cout<<"中餐:炒、煎、炸、蒸、焖"<<endl;
    }
    void washDishes(){
        cout<<"洗碗筷"<<endl;
    }
};

class WesternCooking : public cooking{
public:
    WesternCooking():cooking(){}
    void prepareMaterial(){
        cout<<"准备土豆,面包、西兰花和pasta"<<endl;
    }
     void cook(){
         cout<<"西餐:水煮水煮水煮"<<endl;
     }
    
    void washDishes(){
        cout<<"洗盘子和刀叉"<<endl;
    }
};

int main(){
    ChinesecCooking chinacook = ChinesecCooking();
    chinacook.cook();
    
    WesternCooking westcook = WesternCooking();
    westcook.cook();
    
}

最后结果为:

原文地址:https://www.cnblogs.com/corineru/p/12031817.html