模板方法模式(Template Method)

定义

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

UML类图

  

例子

  AbstractClass

package com.csdhsm.pattemdesign.template;/**  * @Title:  Templete.java   * @Description: 模板父类,包含子类相同部分,子类自己完成的部分* @author: Han   * @date:   2016年6月21日 下午10:03:44  */
public abstract class Templete {//每个子类相同的执行方法public void topOperation() {beforeOperation();operation();afterOperation();}//每个子类不同的地方,延迟到子类去完成public abstract void operation();//已经定义好的方法,写在父类,避免重复private final void beforeOperation() {System.out.println("This acton before the operation!");}private final void afterOperation() {System.out.println("This acton after the operation!");}
}

  模板方法1

package com.csdhsm.pattemdesign.template;/**  * @Title:  TempleteMethod1.java   * @Description: 模板方法1* @author: Han   * @date:   2016年6月21日 下午10:01:35  */
public class TempleteMethod1 extends Templete {@Overridepublic void operation() {System.out.println("I`m Templete Method 1");}
}

  模板方法2

package com.csdhsm.pattemdesign.template;/**  * @Title:  TempleteMethod2.java   * @Description: 模板方法2* @author: Han   * @date:   2016年6月21日 下午10:02:02  */
public class TempleteMethod2 extends Templete {@Overridepublic void operation() {System.out.println("I`m Templete Method 2");}
}

  客户端

package com.csdhsm.pattemdesign.template;public class Solution {public static void main(String[] args) {Templete templete1 = new TempleteMethod1();Templete templete2 = new TempleteMethod2();templete1.topOperation();templete2.topOperation();}
}

  结果

  OK,成功。

总结

  模板方法模式是通过把不变的行为搬移到父类(原则:不写一句重复的代码),出去子类中的重复代码,体现优势。模板方法提供了一个很好的代码服用的模板。

转载于:https://www.cnblogs.com/a294098789/p/5605194.html

设计模式(10)-----模板方法模式相关推荐

  1. Java设计模式之模板方法模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  2. 【Java】设计模式之模板方法模式

    - 好记性不如烂笔头,特将设计模式之模板方法模式记录在我的小仓库. 文章目录 什么是模板方法模式 案例 什么是模板方法模式 简而言之就是一套算法可以适用于多个类,则进行的步骤汇总,让子类别在不改变算法 ...

  3. 一篇博客读懂设计模式之---模板方法模式

    设计模式之模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 简而言之就是:父类定义了骨架(调用哪些方法及其 ...

  4. 设计模式之模板方法模式详解

    设计模式之模板方法模式详解 概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的 ...

  5. php templete什么意思,PHP设计模式之模板方法模式定义与用法详解

    本文实例讲述了PHP设计模式之模板方法模式定义与用法.分享给大家供大家参考,具体如下: 什么是模板方法模式 模板方法(Template Method)设计模式中使用了一个类方法templateMeth ...

  6. 【设计模式】模板方法模式(C#)

    [设计模式]模板方法模式 1.概述 背景 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某 ...

  7. 设计模式之模板方法模式(TemplateMethod)

    设计模式之模板方法模式 模板方法模式 代码实现 模式的应用 模板方法模式 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现 ...

  8. Carson带你学设计模式:模板方法模式(Template Method)

    前言 今天Carson来全面总结最常用的设计模式 - 模板方法模式. Carson带你学设计模式系列文章 Carson带你学设计模式:这是一份全面 & 详细的设计模式学习指南 Carson带你 ...

  9. 如何让孩子爱上设计模式 ——10.桥接模式(Bridge Pattern)

    如何让孩子爱上设计模式 --10.桥接模式(Bridge Pattern) 标签: 设计模式初涉 我有故事,你有酒吗?这年头写个技术文不讲个故事都不行,行,我讲: 还有发现很多的技术博文都开始有喜欢往 ...

最新文章

  1. 脱口秀演员入职华为?破案了:人家还是博士后研究员
  2. Python学习笔记__13.2章 requests
  3. spring@PropertySource用法
  4. css调用方式的方法
  5. 使用Speedment和Spring创建REST API
  6. c#中使用mysql查询语句_遇到@符合怎么办_C# Mysql 查询 Rownum的解决方法
  7. Redis管道(Pipeline)详解
  8. 并发测试工具_性能测试工具基本工作原理及基本操作流程
  9. 高危bash漏洞来袭,小心你的服务器!
  10. lstm原理及实现_LSTM原理
  11. 2018-2019-1 20165203 《信息安全系统设计基础》第十一周学习总结
  12. mysql导入sql文件出错的一种解决方法
  13. ubuntu(20.04)+linux内核(5.17.3)的config文件
  14. eyoucms分页通用css样式
  15. 主键外键超键候选键区别以及联系
  16. 从勒索病毒加密的SQLServer数据库中恢复数据
  17. 标书怎么做?标书制作教程附标书制作思维导图
  18. 应届生面试该注意的小技巧
  19. [原创] Python3.6+request+beautiful 半次元Top100 爬虫实战,将小姐姐的cos美图获得
  20. 多图详解缓冲区溢出问题

热门文章

  1. spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  2. c语言多维数组基础知识,C语言基础第7章多维数组.ppt
  3. 手机技巧:是否应该一次性给手机充电到100%?看完你就明白了!
  4. 硬件:笔记本常见故障处理技巧与思路,值得收藏!
  5. FTP协议及工作原理
  6. 做人:失信是最大的破产!
  7. java 匹配mysql按钮_使用Java在mysql查询中设置匹配函数
  8. linkedin爬虫_重新设计Linkedin的指导功能-用户体验案例研究
  9. 新的一年,碎片化学习前端,我推荐这几个公众号~
  10. MySQL的命令合集