大话设计模式之模板方法模式

模板方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个算法的框架,将特定步骤的实现延迟到子类中。模板方法模式通过在父类中定义算法的骨架,而将具体步骤的实现留给子类来完成,从而使子类可以重新定义算法的特定步骤而不改变算法的整体结构。

在模板方法模式中,通常会包含两种角色:

  1. 抽象类(Abstract Class):定义了一个模板方法,其中包含算法的框架和具体步骤的声明,可以包含具体方法、抽象方法或钩子方法。

  2. 具体子类(Concrete Subclass):实现了抽象类中的具体步骤,完成算法的具体实现。

cpp 复制代码
// 抽象类
class AbstractClass {
public:
    // 模板方法
    void templateMethod() {
        step1();
        step2();
        step3();
    }

    // 具体步骤的声明
    virtual void step1() = 0;
    virtual void step2() = 0;
    virtual void step3() = 0;
};

// 具体子类
class ConcreteClass : public AbstractClass {
public:
    void step1() override {
        std::cout << "Step 1" << std::endl;
    }

    void step2() override {
        std::cout << "Step 2" << std::endl;
    }

    void step3() override {
        std::cout << "Step 3" << std::endl;
    }
};

int main(int argc, char *argv[])
{
    ConcreteClass concrete;

    // 使用模板方法
    concrete.templateMethod();


    return 0;
}

/*
在这个示例中,AbstractClass 是抽象类,其中定义了模板方法 templateMethod(),该方法包含了算法的框架和具体步骤的声明。ConcreteClass 是具体子类,它实现了抽象类中的具体步骤。

通过模板方法模式,我们可以在父类中定义算法的整体结构,而将具体实现延迟到子类中。这样可以使得子类可以根据需要重新定义特定步骤,同时保持算法的一致性。
*/

觉得有帮助的话,打赏一下呗。。

相关推荐
做前端的娜娜子1 天前
从 0 到 1 打造一个配置可视化后台:一次前端配置中心化改造的实战复盘
前端·设计模式·数据可视化
执明wa1 天前
Android 开发中的设计模式入门:六大设计原则
android·设计模式
莫得感情 o2 天前
设计模式 09 · 适配器模式
设计模式·适配器模式
梅头脑2 天前
学了6种设计模式却写出了同事看不懂的代码——SOLID五原则反例对照,治好了我的"过度设计"
设计模式
workflower2 天前
案例:大模型驱动的“发现- 研判- 整改- 验证”全闭环治理体系
人工智能·深度学习·机器学习·设计模式·机器人
董员外2 天前
RAG 系统进化论(九):RAG 评测,怎样证明系统真的变好了?
人工智能·设计模式·程序员
西安小哥2 天前
AI时代技术工程师的"道法术器势":学习图谱、成长规划与角色重塑
人工智能·设计模式·程序员
莫得感情 o2 天前
设计模式 08 · 装饰器模式
设计模式·装饰器模式
董员外3 天前
RAG 系统进化论(八):Agentic RAG(智能体式 RAG),从回答问题到完成任务
人工智能·后端·设计模式
董员外3 天前
RAG 系统进化论(七):Multimodal RAG(多模态 RAG),当知识存在于表格、图片和页面中
人工智能·后端·设计模式