文章目录

  • 一、基本知识
    • 1.定义
    • 2.要点
  • 二、结构图
  • 三、实例说明

一、基本知识

1.定义

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

2.要点

①最常用的设计模式,子类可以复写父类子流程,使父类的骨架流程丰富。
②反向控制流程的典型应用。
③父类 protected 保护子类需要复写的子流程,这样子类的子流程只能父类来调用。

二、结构图

三、实例说明

实例:
某个品牌动物园,有一套固定的表演流程,但是其中有若干个表演子流程可创新替换,以尝试迭代更新表演流程。
注意要点:表演流程固定,只不过是若干个表演子流程可以创新替换。

#include<iostream>
#include<string>
using namespace std;#include <iostream>
using namespace std;class ZooShow {public:// 固定的表演流程封装到这里,由于表演流程固定,所以函数调用顺序是一定的。即实现了表演流程固定。void Show() {Show1();Show2();Show3();Show4();}
protected://子流程允许更新替换,允许子类进行重写//使用protected保护起来 不被客户调用 但允许子类扩展virtual void Show1() = 0;virtual void Show2() = 0;virtual void Show3() = 0;virtual void Show4() = 0;
};class ZooShowEx1 : public ZooShow {protected:virtual void Show1() {cout << "ZooShowEx1的Show1" << endl;}virtual void Show2() {cout << "ZooShowEx1的Show2" << endl;}virtual void Show3() {cout << "ZooShowEx1的Show3" << endl;}virtual void Show4() {cout << "ZooShowEx1的Show4" << endl;}
};class ZooShowEx2 : public ZooShow {protected:virtual void Show1() {cout << "ZooShowEx2的Show1" << endl;}virtual void Show2() {cout << "ZooShowEx2的Show2" << endl;}virtual void Show3() {cout << "ZooShowEx3的Show3" << endl;}virtual void Show4() {cout << "ZooShowEx4的Show4" << endl;}
};int main() {ZooShow* zs = new ZooShowEx1;// ZooShow *zs1 = new ZooShowEx1;// ZooShow *zs2 = new ZooShowEx2;zs->Show();return 0;
}

在表演流程确定的情况下,如果其中的表演子流程有是确定不变的,那么可以在父类中直接实现。比如show1()的内容是一定的,那么直接在父类中实现就好了(最好设置成private),因为这个不需要子类继承重写。

设计模式——模板方法相关推荐

  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模板方法设计模式 1.1模板方法抽象类 1.2模板方法具体类 1.3模 ...

  5. 《编码规范和测试方法——C/C++版》作业 ·006——设计模式 · 模板方法

    文章目录 一.设计模式-模板方法 1.简单介绍 2.框架演示 3.实际案例 一.设计模式-模板方法 1.简单介绍 简单来说,就是先在父类FFF中定义好一个函数AAA,然后这个函数AAA代表了一个操作M ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. .htaccess 禁止IP访问
  2. 如何配置Windows Live Writer
  3. Tableau可视化分析实战系列浏览 Tableau 环境(五) -视图的部件
  4. WM_PAINT消息小结
  5. 216. Combination Sum III
  6. 关闭防火墙_从零开始学Linux运维|09.关闭防火墙和SElinux
  7. 凯立德地图导航2020年最新版车载_明明有车载导航,为什么很多人还是选择用手机导航?有5个原因...
  8. python 编译器pyc_有没有办法知道哪个Python版本.pyc文件被编译?
  9. div css 圆角样式
  10. java基础Runtime类的使用
  11. (127)FPGA面试题-介绍FPGA 门控时钟
  12. Atitit 调用另外语言的功能 目录 1. Waht 常见的语言java python js sql xml h5 c# php等之间的互相调用 1 2. 为什么需要互相调用why 1 3. 常
  13. 【原创】调用有道翻译Api翻译Linux命令accessdb输出内容
  14. 呼吸机吸气触发:压力触发与流量触发
  15. lte tm模式_LTE的几种模式介绍
  16. DeepStream初步学习
  17. 你知道战国四大名将都有谁吗
  18. spring中的aop的xml配置方式简单实例
  19. 信息学奥赛 一本通:1194:移动路线
  20. 基于STM32的智能车/平衡小车/蓝牙小车

热门文章

  1. 【转】排序算法复习(Java实现) (二): 归并排序,堆排序,桶式排序,基数排序...
  2. iOS经典面试题之深入分析block相关高频面试题
  3. Django 模型 —— 模型介绍
  4. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - H. 等差数列
  5. 大数据WEB阶段(九)Servlet+Request
  6. 使用C++实现YUV格式图像与RGB格式图像之间相互转换
  7. 【Linux】一步一步学Linux——free命令(80)
  8. pandas 作图 统计_解决pandas 作图无法显示中文的问题
  9. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)
  10. 51nod 1268 和为K的组合 dfs