• 【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();
        
    }
    
    

    最后结果为:

  • 相关阅读:
    三连击
    铺地毯
    超级玛丽游戏
    A+B problem
    怎么感觉欠缺点什么、灵光在哪,让我顿悟下
    2016年10月,人生的转折点。
    python第七天
    python第六天
    汉诺塔问题(Hanoi Tower)递归算法解析(Python实现)
    计算多数的乘积(Python实现)
  • 原文地址:https://www.cnblogs.com/corineru/p/12031817.html
Copyright © 2020-2023  润新知