C++设计模式之模板方法模式(TemplateMethod)
2019/7/10 22:35:41
本文主要是介绍C++设计模式之模板方法模式(TemplateMethod),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
模板方法模式使用继承来实现模式的功能,在基类使用一个方法来定义算法的各个步骤,这些步骤(方法)的具体实现会放到子类中,通过这样来实现不同算法对象的算法拼合,完成该对象整体算法的实现。
作用
模板方法中定义了具体操作中所使用算法的各个步骤,并将其实现交由子类完成,从而实现多种不同的功能;
类视图
实现
class Lunch { public: Lunch(){} virtual ~Lunch(){} void feed() { cooking(); eating(); cleaning(); } virtual void cooking()=0; virtual void eating() { cout<<"I am eating,Please don't disturb me\n"; } virtual void cleaning(); }; class MCMeal : public Lunch { public: MCMeal(){} virtual ~MCMeal(){} void cooking() { cout<< "I am cooking Mc Meal\n"; } void cleaning() { cout<< "I am cleaning Mc plates"; } }; class KFCMeal : public Lunch { public: KFCMeal() {} virtual ~KFCMeal(){} void cooking() { cout<< "I am cooking KFC Meal\n"; } void eating { cout<< "KFC Meal is good\n"; } void cleaning() { cout<< "I am cleaning KFC plates and cups\n"; } }; int main() { Lunch* meal1 = new McMeal(); meal1.feed(); Lunch* meal2 = new KFCMeal(); meal2.feed(); }
应用场景
- 当一个算法功能需要能够改变,并通过在子类中对功能重写来实现这种变化;
- 当算法能够实现统一步骤,并且可以划分不变部分和可变部分,将可变互粉在子类中实现算法不同的变化;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。
这篇关于C++设计模式之模板方法模式(TemplateMethod)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享
- 2024-07-03微信支付提示订单号重复-icode9专业技术文章分享
- 2024-07-02微服务启动nacos注册上去了,但是一直没有收到请求-icode9专业技术文章分享
- 2024-07-02如何检查文件的编码格式-icode9专业技术文章分享
- 2024-07-02sublime 更改编码格式-icode9专业技术文章分享
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享