文章目录

  • 1. 理论知识
  • 2. 逻辑模板代码
  • 3. 应用

1. 理论知识

模板方法模式:
定义一个操作中的算法骨架, 而将一些步骤延迟到子类中, 模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤

应用实例
1、在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异。
2、西游记里面菩萨定好的 81 难,这就是一个顶层的逻辑骨架。
3、spring 中对 Hibernate 的支持,将一些已经定好的方法封装起来,比如开启事务、获取 Session、关闭 Session 等,程序员不重复写那些已经规范好的代码,直接丢一个实体就可以保存。

优点:
1、封装不变部分,扩展可变部分。
2、提取公共代码,便于维护。
3、行为由父类控制,子类实现。

缺点:
每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

使用场景:
1、有多个子类共有的方法,且逻辑相同。
2、重要的、复杂的方法,可以考虑作为模板方法。

注意事项:
为防止恶意操作,一般模板方法都加上 final 关键词。

2. 逻辑模板代码

class AbstructClass{public:// 一些抽象行为, 放到子类去实现virtual void PrimitiveOperation1() = 0; // 抽象类中的虚函数, 必须在子类实现virtual void PrimitiveOperation2() = 0;// 模板方法, 给出逻辑骨架, 而逻辑组成是一些相应的抽象操作, 他们都推迟了子类的实现void TemplateMethod(){PrimitiveOperation1();PrimitiveOperation2();cout << "--" <<endl;}
};// 实现父类定义的一个或多个抽象方法
class ConcreteClassA : public AbstructClass{public:virtual void PrimitiveOperation1(){cout << "具体类A的方法1 实现" <<endl;}virtual void PrimitiveOperation2(){cout << "具体类A的方法2 实现" <<endl;}
};class ConcreteClassB : public AbstructClass{public:virtual void PrimitiveOperation1(){cout << "具体类B的方法1 实现" <<endl;}virtual void PrimitiveOperation2(){cout << "具体类B的方法2 实现" <<endl;}
};int main(int argc, char const *argv[])
{AbstructClass *c = new ConcreteClassA();c->TemplateMethod();AbstructClass *d = new ConcreteClassA();d->TemplateMethod();delete c, d;return 0;
}

3. 应用

没啥应用, 就是多态么, 父类定义好接口, 子类实现, 重写即可

C++设计模式 模板方法模式(多态)相关推荐

  1. 在一个程序设计里,不同的功能窗口有着相似的功能实现方式,可采用设计模式---模板方法模式

        前段时间学习了一些设计模式,最近在做项目的过程中恰巧用到了其中的一个--模板方法模式.这个模式在程序设计过程中可是为小编省去了不少的代码量呢.具体是怎样应用的呢?接下来小编为您分享. 前面博文 ...

  2. 『设计模式』瑞幸咖啡还是星巴克,一杯下午茶让我明白 设计模式--模板方法模式(Template Method Pattern)

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  3. 『设计模式』设计模式--模板方法模式

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  4. 行为型设计模式---模板方法模式

    设计模式 序号 内容 链接地址 1 设计模式七大原则 https://blog.csdn.net/qq_39668819/article/details/115390615 2 创建型设计模式–工厂模 ...

  5. Java设计模式-模板方法模式详解

    Java设计模式-模板方法模式 文章目录 Java设计模式-模板方法模式 0.前言 1.模板方法原理 2.模板方法模式中的角色 3.模板方法模式的UML类图 4.代码实现 5.编码测试 6.模板模式中 ...

  6. Java设计模式 - 模板方法模式

    Java设计模式 - 模板方法模式 定义一个算法的骨架,并将一些步骤通过子类表达. UML图示 要点 1. 定义一个算法的骨架 - 建立一个抽象类 2. 将一些步骤通过子类表达 - 子类继承抽象类 赋 ...

  7. linkin大话设计模式--模板方法模式

    linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...

  8. JAVA 设计模式 模板方法模式

    定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...

  9. 模板设计模式_设计模式-模板方法模式

    一.模板方法模式的定义 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行.这种类型的设计 ...

最新文章

  1. c++动态链接库及静态链接库的生成与使用
  2. 【Linux】一步一步学Linux——env命令(201)
  3. 17种元器件PCB封装图鉴,美翻了
  4. 被夸了几十年,地球都要因为它变秃了,你还天天用它......
  5. ES6模块的import和export用法总结
  6. 跨域问题及CORS机制
  7. 中国大陆物联网驶入快车道 台商抢上车
  8. 四张照片合成一张怎么弄_我在朋友圈发了这张照片后,所有人都求问教程
  9. spring 全依赖
  10. 创建Dockerfile,构建jdk+tomcat环境
  11. 字符串循环移位 编程之美3.1
  12. 斗地主Java课程设计_Java课程设计---web版斗地主
  13. mac android usb驱动 win10,macbook安装Win10后无法创建引导的USB驱动器解决方法
  14. pdf转换成jpg图片不清晰怎么办?
  15. 拆解老式电饭锅限温器并验证其原理
  16. mysql怎么将成绩划分等级_数据库mysql中case如何给成绩划分等级?
  17. 如果不懂 numpy,请别说自己是 python 程序员
  18. 【一周头条盘点】中国软件网(2018.2.26~2018.3.2)
  19. 山石防火墙命令查看配置_hillstone 防火墙基本配置
  20. 程序员漫学英语单词——resume

热门文章

  1. 四川科技馆智能控制协议设计
  2. Matlab操作1: 用tight_subplot函数绘制组图(可直接做论文用图)
  3. DataBinding?资料绑定? #7 -- 伤脑筋的 GridView加总、小计(原来如此 / 范例下载)...
  4. 浅谈PE(私募股权)业务及系统建设:02. 系统建设
  5. redis泡菜5_《redis讲解》PPT课件.pptx
  6. python订单管理系统功能_订单管理系统的功能模块有哪些?
  7. Sinoregal dbAudit应用-SinoDB
  8. STM32中断挂起和RTOS任务挂起的区别
  9. 【读书笔记】《小王子》- [法] 安托万•德•圣埃克苏佩里 / [法国] 安东尼·德·圣-埃克苏佩里
  10. 手机微信里面的文件打印步骤