《C++20设计模式》模板方法模式

一、前言

简单来说,编写一个虚基类,把可复用的函数写进去,这个虚基类就被称为模板。

相关代码可以在这里,如有帮助给个star!AidenYuanDev/design_patterns_in_modern_Cpp_20

二、实现

1、UML类图

模板方法模式

2、实现

#include <iostream>
#include <memory>
using namespace std;

class Template {
public:
    virtual void step_1() const = 0;
    virtual void step_2() const = 0;
    virtual void step_3() const {} // 钩子函数,提供默认实现
};

class Concrete_1 : public Template {
public:
    void step_1() const override {
        cout << "步骤1" << endl;
    }

    void step_2() const override {
        cout << "步骤2" << endl;
    }
};

int main(){
    unique_ptr<Template> concrete_1 = make_unique<Concrete_1>();

    concrete_1->step_1();
    concrete_1->step_2();
    return 0;
}

相关推荐

  1. c++ 设计模式模版方法

    2024-07-11 11:56:02       36 阅读
  2. 设计模式-模板方法模式

    2024-07-11 11:56:02       63 阅读
  3. 设计模式模板方法模式

    2024-07-11 11:56:02       47 阅读
  4. 设计模式——模板方法模式

    2024-07-11 11:56:02       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 11:56:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 11:56:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 11:56:02       57 阅读
  4. Python语言-面向对象

    2024-07-11 11:56:02       68 阅读

热门阅读

  1. 使用semgrep做代码规范扫描

    2024-07-11 11:56:02       21 阅读
  2. L4 Persistence and Streaming

    2024-07-11 11:56:02       17 阅读
  3. DDOS 攻击原理

    2024-07-11 11:56:02       18 阅读
  4. .net 8 使用 quic 协议通讯

    2024-07-11 11:56:02       22 阅读
  5. jvm 06 补充 OOM 和具体工具使用

    2024-07-11 11:56:02       23 阅读
  6. Chameleon:动态UI框架使用详解

    2024-07-11 11:56:02       24 阅读
  7. C# 8.0 新语法的学习和使用

    2024-07-11 11:56:02       23 阅读
  8. 字符串匹配

    2024-07-11 11:56:02       22 阅读
  9. 升序到降序的类型变化

    2024-07-11 11:56:02       21 阅读
  10. 编程入门题:画矩形(C语言版)

    2024-07-11 11:56:02       21 阅读
  11. k8s 部署RuoYi-Vue-Plus之nginx部署

    2024-07-11 11:56:02       23 阅读
  12. js 日期比较大小

    2024-07-11 11:56:02       18 阅读