设计模式(1):模板方法模式

        在引入 " 模板方法模式 " 之前,先来看一个案例

案例

        在没有发明 " 活字印刷术 " 之前,人们往往是用已有的印刷板去印刷文字,假如老板需要 " 中国最强 " 和 " 最强中国 " 这两个字样,你就需要去雕刻两个印刷板,如:                        设计模式(1):模板方法模式_第1张图片

         在 毕生 发明了活字印刷之后,印刷板变成了一个模板的样例,如:

                        ​​​​​​​        设计模式(1):模板方法模式_第2张图片

         这样你只需要雕刻一次 " 中  国   最   强 " 四个字,然后按不同顺序放入字格即可,效率明显提高一倍

模板方法

        定义:设计一套算法骨架,将某些步骤延迟交给子类去做,延迟步骤并不影响算法的流程

         不难看出,在这里算法的核心实现交给了继承,在上述案例中,活字印刷板设计好了固定字格,具体内容交给使用者

代码实现

        以案例为模型,实现代码如下:

//活字印刷版    抽象类
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<

         在开发人员实现基类的时候,往往会将具体流程写在一个骨架函数中,将部分步骤(函数)交给具体使用的程序员去实现

你可能感兴趣的:(C++设计模式,设计模式,模板方法模式)