在引入 " 模板方法模式 " 之前,先来看一个案例
在没有发明 " 活字印刷术 " 之前,人们往往是用已有的印刷板去印刷文字,假如老板需要 " 中国最强 " 和 " 最强中国 " 这两个字样,你就需要去雕刻两个印刷板,如:
在 毕生 发明了活字印刷之后,印刷板变成了一个模板的样例,如:
这样你只需要雕刻一次 " 中 国 最 强 " 四个字,然后按不同顺序放入字格即可,效率明显提高一倍
定义:设计一套算法骨架,将某些步骤延迟交给子类去做,延迟步骤并不影响算法的流程
不难看出,在这里算法的核心实现交给了继承,在上述案例中,活字印刷板设计好了固定字格,具体内容交给使用者
以案例为模型,实现代码如下:
//活字印刷版 抽象类
class FlexiblePrintPlate
{
public:
//将印刷内容写成纯虚函数,让子类去实现
virtual void Content1()=0;//字格一
virtual void Content2()=0;//字格二
virtual void Content3()=0;//字格三
virtual void Content4()=0;//字格四
//印刷
void print()
{
//设计模板,即设计流程,部分步骤让子类实现,不影响算法骨架
cout<<"印刷内容:";
Content1();
Content2();
Content3();
Content4();
cout<
在开发人员实现基类的时候,往往会将具体流程写在一个骨架函数中,将部分步骤(函数)交给具体使用的程序员去实现