文章目录

  • 1.动机
  • 2.定义
  • 3.代码
  • 4.总结

1.动机

在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,
但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)
而无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求?

2.定义

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

3.代码

//程序库开发人员
class Library{public://稳定 template methodvoid Run(){Step1();if (Step2()) { //支持变化 ==> 虚函数的多态调用Step3(); }for (int i = 0; i < 4; i++){Step4(); //支持变化 ==> 虚函数的多态调用}Step5();}virtual ~Library(){ }protected:void Step1() { //稳定//.....}void Step3() {//稳定//.....}void Step5() { //稳定//.....}virtual bool Step2() = 0;//变化virtual void Step4() =0; //变化
};
//应用程序开发人员
class Application : public Library {protected:virtual bool Step2(){//... 子类重写实现}virtual void Step4() {//... 子类重写实现}
};int main(){Library* pLib=new Application();pLib->Run();delete pLib;}
}

4.总结

Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。
它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,
是代码复用方面的基本实现结构。除了可以灵活应对子步骤的变化外,“不要调用我,让我来调用你”的反向控制结构是Template Method的典型应用。在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法、纯虚方法),
但一般推荐将它们设置为protected方法。

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

  1. C++设计模式:Template Method

    我使用过一个简单的后台服务框架.这个框架上手很容易,我只需要继承一个基类,同时实现,或重写(override)基类声明的几个接口(这些接口声明为虚函数,或者纯虚函数),然后调用基类定义好的run()函 ...

  2. 设计模式之略见一斑(Template Method模板方法模式)

    模板方法模式就是预先作好一个模板,开发者只要根据模板添加相应的业务实现,这个就是架构啦. 它有如下特点: 1.这个模板一般是个抽象类,抽象出子类中部分公共的方法,从而减轻子类的负担. 2.这个模板可能 ...

  3. Template Method - 模板方法模式

    1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序.但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关. 例子1 ...

  4. C++设计模式之Template Method(模板方法模式)

    模板方法模式总结起来就是灵活运用C++的多态性,灵活运用普通函数,虚函数,纯虚函数的组合, 打个比方,每个人每天的生活都不一样,老师要上课,学生要学习,程序员要编程,但是每个人都需要吃饭与休息,这样我 ...

  5. Template Method(模板方法)模式

    1. 意图 定义一个操作中的算法的骨架. 而将一些步骤延迟到子类中. 它使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 2. 动机 3. 适用性 一次性实现一个算法的不变部分. 并将 ...

  6. java 模板方法_设计模式(java实现)_模板方法模式(Template method)

    设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...

  7. 封装算法: 模板方法(Template Method)模式

    template method(模板方法)模式是一种行为型设计模式.它在一个方法中定义了算法的骨架(这种方法被称为template method.模板方法),并将算法的详细步骤放到子类中去实现.tem ...

  8. 设计模式03——Template Method模式

    定义 模板方法(Template Method)模式就是带有模板功能的模式 ,组成模板方法的方法被定义在父类中,这些方法是抽象方法,在模板方法中规定了这些方法的执行流程,这些抽象方法需要子类来具体实现 ...

  9. 设计模式之模板方法模式(Template Method)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

最新文章

  1. 量子信息之父辞世,开山论文写完14年才被发表,晚年去当建筑工人
  2. 10个不太为人所知的,但实用的PHP函数
  3. windows平台下:scikit-learn安装教程
  4. java 方法 示例_Java ArrayDeque pollFirst()方法与示例
  5. treemap怎么保证有序_干货!208道面试题教你怎么通过面试!
  6. Linux IPC POSIX 共享内存
  7. 完全揭秘***利用漏洞***电子邮件系统
  8. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
  9. matlab傅里叶光学仿真,计算傅里叶光学实现衍射图样的计算
  10. 微信小程序分享和转发朋友圈功能
  11. python的qrcode模块计算矩阵二维码像素尺寸大小
  12. linux脚本无法执行命令,shell脚本在Windows下能执行,而Linux不能执行的原因及解决...
  13. 苹果手机图片如何同步鸿蒙,教你如何在两台iPhone之间传照片
  14. windows2016小文件服务器,Windows Server 2016 搭建 SMB 共享文件
  15. 【GAMES101现代计算机图形学入门笔记】Lec05 光栅化1(三角形)
  16. SOAP实例入门(转)
  17. 低学历逆袭难,真的只是不够努力吗?
  18. android实训报告ppt,ppt实验报告总结
  19. cocos2d-x 中文输出 GB2312与UFT8互转
  20. matlab 对数坐标

热门文章

  1. LeetCode 1464. 数组中两元素的最大乘积
  2. LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)
  3. 一份来自清华的数据分析笔记,请查收!
  4. 训练效率低?GPU利用率上不去?快来看看别人家的tricks吧~
  5. Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】
  6. 淘宝网Java五面:现场面试49题含答案!
  7. java架构师进阶之独孤九剑:数据结构以及书籍推荐
  8. 论文浅尝 | 面向视觉常识推理的层次语义增强方向图网络
  9. 论文浅尝 | 基于知识图的问答变分推理
  10. 机器学习中的特征建模(特征工程)和算法选型建模 - 以暴力破解识别为例