TemplateMethod模式-设计模式(十)

作用:
定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中。 TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
嗯,还是以鸡腿为例来说一下这个方法。
啃得鸡现在要炸鸡腿,炸鸡腿呢我们就把它当做是个模板,怎么炸?当然不同的口味有不同的炸法嘛;因此我们在炸各种口味的鸡腿就可以在派生类里实现了嘛。
看一个例子:

#include<iostream>

using namespace std;

//抽象基类,定义算法的轮廓
class Chicken
{
	public:
		Chicken(){}
		virtual ~Chicken(){}
		//这个函数中定义了算法的轮廓
		void TemplateMethod()
		{
			ChickenA();
			ChickenB();
		}
	protected:
		//纯虚函数;由派生类实现之
		virtual void ChickenA()=0;
		virtual void ChickenB()=0;
};
//继承自Chicken,实现算法
class KFCChicked:public Chicken
{
	public:
		KFCChicked(){}
		virtual ~KFCChicked(){}
	protected:
		virtual void ChickenA()
		{ 
			cout<<"KFC油炸麻辣味鸡腿..."<<endl; 
		}
		virtual void ChickenB()
		{ 
			cout<<"KFC油炸芝士味鸡腿..."<<endl; 
		}
};

//继承自Chicken,实现算法
class MCDChicked:public Chicken
{
	public:
		MCDChicked(){}
		virtual ~MCDChicked(){}
	protected:
		virtual void ChickenA()
		{ 
			cout<<"MCD油炸麻辣味鸡腿..."<<endl; 
		}
		virtual void ChickenB()
		{ 
			cout<<"MCD油炸芝士味鸡腿..."<<endl; 
		}
};


int main()
{
	Chicken* pKfc = new KFCChicked();
	
	Chicken* pMcd = new MCDChicked();
	
	pKfc->TemplateMethod();

	pMcd->TemplateMethod();
	
	delete pKfc;
	delete pMcd;
	return 0;
}

看看,是不是很想吃。说的我都流口水了。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值