C++设计模式之模板方法模式怎么实现
导读:本文共1052字符,通常情况下阅读需要4分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 模板方法模式使用继承来实现模式的功能,在基类使用一个方法来定义算法的各个步骤,这些步骤(方法)的具体实现会放到子类中,通过这样来实现不同算法对象的算法拼合,完成该对象整体算法的实现。作用模板方法中定义了具体操作中所使用算法的各个步骤,并将其实现交由子类完成,从而实现多种不同的功能;类视图实现classLunch{public:Lunch(){}virtu... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。模板方法模式使用继承来实现模式的功能,在基类使用一个方法来定义算法的各个步骤,这些步骤(方法)的具体实现会放到子类中,通过这样来实现不同算法对象的算法拼合,完成该对象整体算法的实现。
作用
模板方法中定义了具体操作中所使用算法的各个步骤,并将其实现交由子类完成,从而实现多种不同的功能;
类视图
实现
classLunch{public:Lunch(){}virtual~Lunch(){}voidfeed(){cooking();eating();cleaning();}virtualvoidcooking()=0;virtualvoideating(){cout<<"Iameating,Pleasedon'tdisturbme\n";}virtualvoidcleaning();};classMCMeal:publicLunch{public:MCMeal(){}virtual~MCMeal(){}voidcooking(){cout<<"IamcookingMcMeal\n";}voidcleaning(){cout<<"IamcleaningMcplates";}};classKFCMeal:publicLunch{public:KFCMeal(){}virtual~KFCMeal(){}voidcooking(){cout<<"IamcookingKFCMeal\n";}voideating{cout<<"KFCMealisgood\n";}voidcleaning(){cout<<"IamcleaningKFCplatesandcups\n";}};intmain(){Lunch*meal1=newMcMeal();meal1.feed();Lunch*meal2=newKFCMeal();meal2.feed();}
应用场景
当一个算法功能需要能够改变,并通过在子类中对功能重写来实现这种变化;
当算法能够实现统一步骤,并且可以划分不变部分和可变部分,将可变互粉在子类中实现算法不同的变化;
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
C++设计模式之模板方法模式怎么实现的详细内容,希望对您有所帮助,信息来源于网络。