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

定义有些呆板,说说我的理解吧。父类定义实施的步骤,子类中实现具体的算法。当我们要完成在某一细节层次一直得一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑用模板方法木事来处理。

代码很简单的不要不要的,还有注释。直接贴啦。

(1)定义抽象模板父类

/*** 抽象模板,定义并实现了一个模板方法。这个模板方法一般是个<b><u><font color="blue">具体方法</font></u></b>。<br/>* 它给出了一个顶级逻辑的骨架。<br/>* 而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。<br/>* 顶级逻辑也有可能调用一些具体方法。* @author 董永康**/
public abstract class AbstractClass {public abstract void add();public abstract void sub();public void TemplateMethod() {add();sub();System.out.println(this.getClass().getName());}
}

(2)具体实现子类

/*** 具体实现类,在这里实现父类定义的一个或者多个抽象方法* @author 董永康**/
public class ConcreteClassA extends AbstractClass {@Overridepublic void add() {System.out.println("ConcreteClassA-->add()");}@Overridepublic void sub() {System.out.println("ConcreteClassA-->sub()");}}
/*** 具体实现类,在这里实现父类定义的一个或者多个抽象方法* * @author 董永康**/
public class ConcreteClassB extends AbstractClass {@Overridepublic void add() {System.out.println("ConcreteClassB-->add()");}@Overridepublic void sub() {System.out.println("ConcreteClassB-->sub()");}}

(3)测试类

public class Template {public static void main(String[] args) {AbstractClass  mAbstractClass = new ConcreteClassA();mAbstractClass.TemplateMethod();mAbstractClass = new ConcreteClassB();mAbstractClass.TemplateMethod();}
}

(4)输出

ConcreteClassA-->add()
ConcreteClassA-->sub()
com.dyk.template.ConcreteClassA
ConcreteClassB-->add()
ConcreteClassB-->sub()
com.dyk.template.ConcreteClassB

总结:模板方法模式是通过把不变的行为搬移到超类,去除子类中的重复代码来体现它的优势。提供了一个很好的代码复用平台。通过模板方法模式把不可变的行为搬移到父类,帮助子类拜托重复不变行为的纠缠。

下载地址:http://download.csdn.net/detail/qq_17250009/9229893

模板方法模式----设计模式系列相关推荐

  1. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  2. C++设计模式之模板方法模式

    模板方法模式 设计模式的定义 模板方法模式详解 背景----柠檬茶和咖啡的的冲泡方式 代码实现咖啡和茶冲泡的类 整理相似点 进一步设计 总结一下 认识模板方法 测试一下 模板方法模式的优点 模板方法的 ...

  3. 设计模式系列·王小二需求历险记(一)

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  4. java tea bag_设计模式系列教程—Template Method Pattern(模板方法模式)

    9 Template Method Pattern(模板方法模式) 前言:封装步骤的算法. Vander作为老板,凡是亲力亲为,他新开了家咖啡店,这是他招牌咖啡卡布奇诺的冲泡方法: 1.把水煮沸 2. ...

  5. Java设计模式系列之——模板方法模式

    大事件 关注篮球或者喜欢逛社交网站的朋友们可能都知道,2019年10月5日,NBA休斯顿火箭队总经理莫雷在推特上发布了一张无知的涉港图片,引发全体中国人民的强烈抗议和不满,一时间舆论哗然,此后,NBA ...

  6. 设计模式系列之 模板方法模式

    定义 在模板方法中定义一个算法的骨架,而将部分步骤延迟到子类中,使子类在不改变算法结构的情况下,重新定义算法中的部分步骤. 理解该模式的关键就在"模板"二字.什么是模板?模板就是预 ...

  7. 设计模式系列之模板方法模式

    1 定义 模板方法模式定义了一个算法的步骤,并允许子类为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤. <百度百科> 模板方法模式,首先从名字看 ...

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

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

  9. 【系列索引】结合项目实例 回顾传统设计模式 打造属于自己的模式类系列

    网上设计模式的文章很多 虫子就不再和大家扯一些没有营养的理论 开此系列博文 一方面因为自己颓废了大半年 趁此机会回顾一下 另一方面希望能够帮助新人走出设计模式的误区, 如何做好设计模式 1.在发掘新的 ...

  10. Java设计模式之行为型:模板方法模式

    一.什么是模板方法模式: 模板方法是基于继承实现的,在抽象父类中声明一个模板方法,并在模板方法中定义算法的执行步骤(即算法骨架).在模板方法模式中,可以将子类共性的部分放在父类中实现,而特性的部分延迟 ...

最新文章

  1. 苹果7【】闪存测试软件,不厚道!iPhone7大容量版竟采用TLC闪存
  2. 开始使用asp.net ajax的控件工具包AJAX Control Toolkit
  3. oj题 根据化学方程式计算摩尔质量
  4. 深度学习入门者选择开源框架丨硬创公开课群友问答
  5. 1032. Sharing (25)
  6. 医院管理数据库课程设计
  7. DOS命令:doskey
  8. 基于Qt开发的中国象棋 (1) 双人对战
  9. 微信小程序自动化测试——智能化 Monkey
  10. 我是如何学习游戏引擎的?
  11. 计算机毕业设计-基于ssm的手机商城系统(文档+源码)
  12. 信捷 XDH Ethercat 正负极限的设置
  13. C++知识讲解(一)
  14. goland依赖一直飘红解决 MAC GOLANG
  15. 百度DMA+小度App的蓝牙语音解决方案入局
  16. 计算机操作系统论文,计算机操作系统毕业论文
  17. 【机器学习基础】乡村F4带你入门线性回归 带python代码示例(一)
  18. 分享:Android 实验
  19. fckeditor漏洞_三十,文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御
  20. 计算机运维中常见英语单词,盘点网络工程师需要掌握的英语单词(A-C篇)

热门文章

  1. Oracle内存结构详解(四)--Oracle SGA其他组成部分
  2. S3C6410 SD卡启动uboot分析(详细)
  3. gerrit权限控制
  4. 内存映射之fixmap(early_fixmap_init)
  5. activity 变成后台进程后被杀死_Android开发后台服务
  6. SONIC 编译指南
  7. Android下基于UVC的UsbCam的开发
  8. read()/write()的生命旅程之二——第二章:read()
  9. Idle进程的切换过程
  10. E - Wireless Network(并查集)