《TemplateMethod1.h》

#include <iostream>

#include <string>

using namespace std;

class A{
public:
    A(){};
    virtual ~A(){};
    void Method();
protected:
    virtual void b() = 0;
    virtual void c() = 0;
};

class B: public A{
public:
    B(){};
    virtual ~B(){};
protected:
    void c();
    void b();
};

class C: public A{
public:
    C(){};
    virtual ~C(){};
protected:
    void b();
    void c();

};

《TemplateMethod1.cpp》

include "stdafx.h"
#include "TemplateMethod1.h"

void A::Method(){
    this->b();
    this->c();
}

void B::b(){
    cout << "B::b()" <<endl;
}
void B::c(){

cout << "B::c()" <<endl;
}
void C::b(){

cout << "C::b()" <<endl;
}
void C::c(){
    cout << "C::c()" <<endl;
}

int main(int argc, char* argv[])
{
    A* t = new B;
    A* t1 = new C;
    t->Method();
    t1->Method();
    return 0;
}

做一个简单的实现,具体了解了模板模式的核心主要是:将算法接口封装在抽象接口类中,算法实现放在派生类中实现。

工作中经常这么设计,原来也属设计模式中的一种。

C++设计模式之四 模板模式相关推荐

  1. 设计模式回顾——模板模式(C++)

    文章目录 1 前言 2 什么是模板模式 2.1 模板模式组成 2.2 模板模式UML图 2.3 模板模式作用 3 模板模式优缺点 4 什么地方使用模板模式 5 模板模式实现 6 模板模式与策略模式比较 ...

  2. 《设计模式》-模板模式

    玩物丧志啊!!!最近总想着玩,休息,结果又耽误了半个月..唉! 惭愧啊. 今天是设计模式的倒数第二个了.. 虽然前面的 忘得差不多了.不过等看完了 要进行总复习,再复习,再回归,再理解才算完. 模版模 ...

  3. 【设计模式】模板模式——jdbc案例

    系列文章目录 [设计模式]策略模式--支付案例 [设计模式]适配器模式--登录案例 [设计模式]委派模式--登录案例 文章目录 系列文章目录 前言 一.lol案例 二.jdbc案例 总结 前言 假如开 ...

  4. 设计模式之模板模式和工厂模式

    模板模式和工厂模式的类别分类为"交给子类",即两种设计模式都是通过子类来实现具体的功能.主角是子类,而不像上次的适应设计模式,主角是连接器.这种差别着重体现在我们在工业设计中对需求 ...

  5. 设计模式(模板模式,命令模式,备忘录模式)

    目录 模板模式 什么是模板模式? 术语? 什么时候使用模板模式? 模板模式的优点? 模板模式的缺点? 角色? 钩子函数? 注意事项和细节? 什么场景使用模板模式? 案例: 命令模式 什么是命令模式? ...

  6. java解耦的模板模式_Java 设计模式(9) —— 模板模式

    一.模板模式 封装了一个算法步骤,并允许子类为一个或多个步骤方法提供实现.模板模式可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤. 模板模式 二.示例 泡咖啡与泡茶: 泡咖啡的步骤: 水 ...

  7. java 模板模式_java设计模式之模板模式

    模板模式 模板模式(Template Pattern),定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤.这种类型的设计模式属于 ...

  8. Java设计模式之模板模式【通过LOL选英雄案例】

    初衷 设计模式(Design Pattern)引用百度百科中的一句话,就是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.实际上在我们的实际编码中到处都有设计模式的影子,比如最常用的单例 ...

  9. Python设计模式:模板模式

    设计模式十七:模板模式 什么是模板模式 编写优秀代码的一个要素是避免冗余: 模式关注的是消除代码冗余: 无需改变算法结构就能重新定义一个算法的某些部分. 使用场景 发现结构相近的算法中有重复代码,则可 ...

最新文章

  1. 自己做站点(二) 20块钱搞定一个企业站:域名amp;空间申请
  2. hadoop报错:WARN mapred.JobClient: Error reading task outputNo route to host
  3. mysql数据库没有密码_MySQL用户数据库没有密码列-在OSX上安装MySQL
  4. mysql数据聚合技术_Mysql 去重 聚合
  5. mysql重做日志与binlog日志区别_【135期】谈谈MySQL中的重做日志,回滚日志,以及二进制日志的区别及各自作用...
  6. svn回退到上一个版本_Git实用教程(一) | 为什么需要版本控制?(以嵌入式项目开发为例)...
  7. 删除字符串中重复的字符
  8. Linux内核驱动之主次编号
  9. Java反编译工具XJad使用注意事项
  10. matlab菲涅尔衍射光强分布,矩孔菲涅耳衍射的光强分布.pdf
  11. 【嵌入式模块】再探ESP8266,保姆级教程
  12. COAP协议全面分析
  13. PreparedStatement.addbatch()的使用
  14. Android 音乐播放器SD卡本地播放器实现
  15. vue之使用vue-cli搭建SPA项目
  16. 全球与中国矿物加工工程市场深度研究分析报告
  17. 网上订餐管理系统的设计与实现
  18. ffmpeg配置H264
  19. 创客教室功能展示的意义
  20. TCP/IP之四书五经

热门文章

  1. centos 没有nmtui命令_Linux free 命令
  2. java解析json数组对象_JAVA中快速解析JSON对象里包含的JSON数组
  3. spring 基于xml方式配置aop
  4. python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小
  5. 【Immutable】拷贝与JSON.parse(JSON.stringify()),深度比较相等与underscore.isEqual(),性能比较...
  6. Qt 常用类——QStandardItemModel
  7. Unknown storage engine 'InnoDB'
  8. Ubuntu 12.04(32位)安装Oracle 11g(32位)全过程以及几乎所有问题的解决办法
  9. 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
  10. 把东西从学校搬回来了