一句话

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

概括

解析

看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template method),但每个步骤针对不同的情况,都有不一样的做法,这就要看你随机应变啦(具体实现); 
  模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。

实例

还是以产品生产为例。

假设一个产品的生产只分为设计和量产两个阶段。

而产品的类型有很多中, 简单而言有硬件产品和软件产品的分类。

这可以定义一个产品的模板,在这里面定义一些抽象方法,具体的实现在各产品的类中。

ProductTemplate.java 抽象类

SoftwareProduct. java 具体类

TestMain.java -测试类

/**   * @Title: ProductTemplate.java* @Package designptn.templatemethod* @Description: TODO* @author oscar999 * @date 2016-11-28 下午3:33:03* @version V1.0   */package designptn.templatemethod;/*** @author oscar999* */
public abstract class ProductTemplate {public abstract void design();public abstract void massProduct();public void product(){System.out.println("Begin product:");design();massProduct();}
}
package designptn.templatemethod;public class SoftwareProduct extends ProductTemplate {@Overridepublic void design() {// TODO Auto-generated method stubSystem.out.println("Software design");}@Overridepublic void massProduct() {// TODO Auto-generated method stubSystem.out.println("Software Mass Product");}}
/**
* @Title: TestMain.java
* @Package designptn.templatemethod
* @Description: TODO
* @author oscar999
* @date 2016-11-28 下午3:38:21
* @version V1.0
*/package designptn.templatemethod;/*** @author oscar999**/
public class TestMain {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubProductTemplate product = new SoftwareProduct();product.product();}}

后记

在JUnit 中就有很多运用这种模式的地方, 像setUp  和TearDown 的方法实现

[设计模式-行为型]模板方法模式(Template Method)相关推荐

  1. JAVA设计模式(14) —行为型模板方法模式(Template Method)

    1 定义: 模板方法模式(Template Method) Define the skeleton of an algorithm in anoperation, deferring some ste ...

  2. 模板方法模式 Template method 行为型 设计模式(二十六)

    模板方法模式 Template method 上图为网上百度的一份简历模板截图 相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为你的 ...

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

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

  4. Net设计模式实例之模板方法模式(Template Mothed Pattern)(1)

    一.模板方法模式简介(Brief Introduction) 模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不 ...

  5. 设计模式之模板方法模式(Template Method Pattern)

    模式的定义与特点 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤.它 ...

  6. 【设计模式】行为型02模板方法模式(Template Method Patten)

    五一长假,没有出去,不喜欢嘈杂的人群,玩了会游戏发泄了下憋在心底的戾气,手旁大马克杯里是母亲泡的绿茶.点开自己的播放列表,耳机里传来的是理查德克莱德曼的致爱丽丝.自己是个凡人,卑微渺小的活着.不说废话 ...

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

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

  8. 设计模式之行为模式中的模板方法模式(template method)

    设计模式之行为模式中的模板方法模式(template method) 声明 一.行为模式 二.模板方法模式 三.实例 概况描述 代码 运行结果 优点 类似的模式 优秀文章 声明 本人写此文章只是为了梳 ...

  9. 趣谈设计模式 | 模板方法模式(Template Method):封装不变部分,扩展可变部分

    文章目录 案例:房屋建造 模板方法模式 模板方法模式与策略模式 总结 完整代码与文档 这个设计模式过于简单,所以不是很好举例- 案例:房屋建造 假设我们是建筑公司中的规划者,负责设定建筑方案,在初期我 ...

最新文章

  1. 树形dp ---- gym101667 A(贪心 + 树形dp + 两个dp方程组维护)
  2. BTC行情分析,BCH一枝独秀秀全场
  3. C语言——程序的编译+链接(linux+gcc实现过程)
  4. 五:二叉树中和为某一直的路径
  5. (转)linux下find查找命令用法
  6. 《c语言从入门到精通》看书笔记——第1章 C语言的概述
  7. MySQL 数据库命令之 mysqlshow -- 显示 MySQL 数据库相关信息
  8. socket网络编程udp
  9. oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)
  10. Pandas知识点-逻辑运算
  11. python将时间戳转化为标准时间格式的方法
  12. fx5u模拟量如何读取_最全三菱FX5U系列PLC视频
  13. android调weex方法,Android集成weex汇总
  14. 《C陷阱与缺陷》学习笔记(1):这本书值得看吗?
  15. 台币转换计算机,Soulver 内建自动计算机功能的备忘录工具 货币换算、複杂数学式也支援...
  16. c语言图片的裁剪拼接,截屏、图片裁剪、拼接
  17. 傻子都能看懂的 财务报表入门
  18. 微信支付之商户号以及appid以及密钥
  19. 计算机科学与技术用惠普星15,11代酷睿满血出击 快来GET蔡徐坤同款惠普星14吧...
  20. 计算机函数乘法word,【2人回答】Word里相乘的函数是什么?-3D溜溜网

热门文章

  1. python 中参数*args, **kwargs
  2. 内存泄露与内存溢出的区别
  3. 索引深入浅出(6/10):选择正确并合适的聚集索引键
  4. Spring 三种bean装配的方式
  5. W3100SM-S 短信猫代码发送 上
  6. 解决SQLite异常:library routine called out of sequence
  7. 德勤发布最新元宇宙报告:愿景、技术和应对
  8. 关闭算法推荐正如刻舟求剑?!
  9. 【报告分享】2020中国直播行业风云洞察.pdf
  10. sklearn报错DeprecationWarning: the imp module is deprecated in favour of importlib