设计模式之22 - 模板方法Template method

        模板 是一个通俗的概念定义,PPT模板、Word模板、Excel模板,你能接触的模板有很多,模板其实就是一个 Example、一个框架,你根据这个例子去具体实现。

        模板方法 的概念与此类似,在 抽象类中定义 算法的骨架,将具体内容 延迟到子类实现

        

        上面的这个图说明的比较清晰,我们通过代码再来看一下:

class AbstractClass
{
public:
    // 模板方法,给出逻辑骨架,而逻辑的组成是相应的抽象操作,它们推迟到子类去实现
    void TemplateMethod()
    {
        PrimitiveOperation1();
        PrimitiveOperation2();
        PrimitiveOperation3();
    }
protected:
    // 一些抽象行为,放到子类去实现
    virtual void PrimitiveOperation1();
    virtual void PrimitiveOperation2();
    virtual void PrimitiveOperation3();
};

// 具体类A,实现了抽象类中的特定步骤
class ConcreteClassA : AbstractClass
{
protected:
    virtual void PrimitiveOperation1()
    {
        // ……
    }
    virtual void PrimitiveOperation2()
    {
        // ……
    }
    virtual void PrimitiveOperation3()
    {
        // ……
    }
};
// 具体类B,实现了抽象类中的特定步骤 - 与A不同
class ConcreteClassB : AbstractClass
{
protected:
    virtual void PrimitiveOperation1()
    {
        // 与ConcreteClassA不同
    }
    virtual void PrimitiveOperation2()
    {
        // 与ConcreteClassA不同
    }
    virtual void PrimitiveOperation3()
    {
        // 与ConcreteClassA不同
    }
};

        模板方法 通过继承来实现方法的扩展,这种思路比较重要的意义在于能够对算法的轮廓进行 划分,能够有效分离出主次,方便从整体到局部的扩展。

        在程序的主框架相同、细节不同的情况下,可以考虑使用模板方法。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值