模板模式template method

场景:具有具体流程,但具体某一步的业务不同

到银行办理业务:排队取号,办理业务,给员工打分

请客吃饭:等待,点单,吃饭,结账

模板方法模式介绍:模板方法是编程常用的模式,它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。

核心:处理步骤(流程)由父类定义好,具体实现延迟到子类中定义

结构:抽象父类(决定流程以及抽象的业务方法等着子类实现),不同的子类实现不同的业务,客户端(使用匿名内部类或不同的类实现相同的流程中某部分的不同业务)

本质:多态

例子:银行(排队,不同业务,评分)

public abstract class Bank {
  public void takeNumber() {//排队取号
   System.out.println("排队取号");
  }
  public abstract void transact();//钩子方法,具体不同的业务
  public void evalute() {//评分
   System.out.println("评分");
  }
  public void process() {//流程
   this.takeNumber();
   this.transact();//钩子方法,钩到那个子类就实现那个,多态
   this.evalute();
  }
}

public class Client {
public static void main(String[] args) {
 Bank b=new DrawMoney();
 b.process();
 //匿名内部类的方法
 Bank b2=new Bank() {
  @Override
  public void transact() {
   System.out.println("存钱");
  }
 };
}
}
class DrawMoney extends Bank{
 @Override
 public void transact() {
  System.out.println("取钱!!");
 }
}

设计模式之GOF23模板模式相关推荐

  1. 设计模式 - 行为型 - 模板模式学习

    现象: 设计模式 - 行为型 - 模板模式学习 介绍: 模板模式的设计思路,在抽象类中定义抽象方法的执行顺序, 并将抽象方法设定为只有子类实现,但不提供独立访问的方法 只能通过已经被安排好的定义方法去 ...

  2. Spring中用到的九种设计模式五:模板模式

    系列文章目录 文章目录 系列文章目录 前言 一.模板模式 二.主要角色 1. AbstractTemplate(抽象模板): 2. ConcreteTemplate(具体模板): 三.代码实现与示例 ...

  3. 设计模式之——Template模板模式

    Template模式又叫模板模式,是在父类中定义处理流程的框架,在子类中实现具体处理逻辑的模式.当父类的模板方法被调用时程序行为也会不同,但是,不论子类的具体实现如何,处理的流程都会按照父类中所定义的 ...

  4. C语言和设计模式(之模板模式)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 模板对于学习C++的同学,其实并不陌生.函数有模板函数,类也有模板类.那么这个模板模式是个什么 ...

  5. 23种设计模式-行为型-模板模式

    定义 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变算法结构的情况下重新定义该算法的某些特定步骤. 主要解决 一些方法通用,却在每一个子类都重写了这一方法. 何时使用 有 ...

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

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

  7. 模板模式(template)解析例子

    摘要:本文深入浅出的讲述了设计模式中的模板模式,并给出了简单的示例,例子浅显易懂,并附带源代码. 模板模式属于行为型模式,其意图是定义一个操作的算法骨架,而将一些步骤延迟到子类中,可以不改变一个算法的 ...

  8. 设计模式快速学习(六)模板模式

    举个例子:我们写HTML的时候,先写head然后写body,这样完成了一个空HTML页面的架子,我们的这一系列行为就是一个模板.模板模式中,首先会定义一个抽象类来声明这个事件模板,子类实现并被调用.也 ...

  9. java 之 模板模式(大话设计模式)

    模板模式,我们很多人都用过,而且大家都比较喜欢这个模式,先看一下类图 大话设计模式-类图 作为一个程序员,不懂得"偷懒",在笔者看来不是很合格哦!当我们编写程序时,发现很多个类所走 ...

  10. 【设计模式】【行为型模式】模板模式

    概念 模板模式定义了一个算法的步骤,并允许子类为一个或多个步骤提供其实践方式.让子类在不改变算法架构的情况下,重新定义算法中的某些步骤. 抽象摸板角色:(抽象父类) 定义了一个或多个抽象操作,以便让子 ...

最新文章

  1. ACL-文件访问控制列表
  2. [文章存档]Kudu 的 Debug Console 窗口如何查看更多文件
  3. git常用命令,分支操作,子模块
  4. EasyTable2.1 功能更加强大,bug全面修复的html table插件!
  5. Python中sort和sorted的用法与区别
  6. javaweb学习中的路径问题
  7. linux-0.11内核 调试教程+GCC源代码
  8. WEB前端常用JavaScript代码整理(二)
  9. StreamInsight查询系列汇总
  10. 面试相关——计算机网络基础
  11. linux 下的带宽、延时、吞吐率、PPS
  12. word保存为高分辨率图片(word2016)
  13. 《图形编程技术学习》(三十五)Phong明暗处理
  14. python下载博文中微博图床图片
  15. 中科院计算机学院考研真题,2021年862计算机学科中国科学院大学考研真题及详解...
  16. 微芯片植入大脑可保存人们的大脑记忆内容
  17. 计算机毕业设计Java-ssmC语言教学辅导网站源码+系统+数据库+lw文档
  18. 【可视化】rviz下的kitti数据集可视化(1)
  19. Android逆向实例笔记—手游中的内购破解(火柴人联盟最新版1.9.2 BB弹 )
  20. 20172303 20172322 2017-2018-2 暑假作业 结对编程项目-舒尔特方格(及获小黄衫感想)...

热门文章

  1. SSM集成activiti6.0错误集锦(二)
  2. ie6中margin失效问题
  3. 基于mAppWidget实现手绘地图--索引DEMO
  4. 拓端tecdat|Python用稀疏、高斯随机投影和主成分分析PCA对MNIST手写数字数据进行降维可视化
  5. 拓端tecdat|使用markdown,knitr和pandoc在R语言中编写可重现的报告
  6. linux 目录权限,Linux目录权限整理总结
  7. actor模型 java框架,actor模型(actor模式优缺点)
  8. 计算机技术中采用二进制,在计算机技术中采用二进制.docx
  9. echo输出大花括号 php_PHP的echo输出内容过多会很慢
  10. python如何去某一列的元素