设计模式 ---- 模板方法

模板方法

模板方法可能和构建者模式有一点点相似,两者都可以将一个复杂的过程拆分成多个步骤

  • Builder:最终目标通常是构建一个对象
  • Template Method:最终目标是执行一个算法/流程

区别是,构建者模式关注的是“如何把一个复杂对象组装出来”,不同 Builder 可以按照自己的方式设置对象的各个部分;

而模板方法关注的是“一个算法必须按照什么流程执行”,父类规定流程骨架,子类负责实现具体步骤

比如将大象装进冰箱

第一步打开冰箱门,第二部将大象塞进冰箱,第三步,将冰箱门关上

这只是一个固定的顺序,具体的每一步骤,父类并不关心,这是继承实实现子类关心的问题,父类只负责什么样的顺序才能将大象装进冰箱

代码示例


class PutElephantIntoFridge
{
public:

    void Execute()
    {
        OpenDoor();
        PutElephant();
        CloseDoor();
    }

protected:

    virtual void OpenDoor() = 0;
    virtual void PutElephant() = 0;
    virtual void CloseDoor() = 0;
};

这里的 Execute() 就是模板方法

它规定了整个算法的执行流程

OpenDoor()
    ↓
PutElephant()
    ↓
CloseDoor()

子类具体实现

class MyFridge : public PutElephantIntoFridge
{
protected:

    void OpenDoor() override
    {
        // 具体怎么开门
    }

    void PutElephant() override
    {
        // 具体怎么把大象放进去
    }

    void CloseDoor() override
    {
        // 具体怎么关门
    }
};

主业务代码中直接使用


MyFridge demoIns;

demoIns.Execute()

板方法的核心就是:父类规定“流程怎么走”,子类决定“每一步具体怎么做”

posted on 2026-09-06 15:56  咸云闲鱼  阅读(3)  评论(0)    收藏  举报