模板方法(TemplateMethod)

抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式。

解决的问题

1.当功能内部一部分实现是确定的,一部分实现是不确定的,这时可以把不确定的部分暴露出去,让子类去实现。

2.编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类去实现,就是一种模板模式。

如下为“计算一段代码所花时间”的模板:

  1. abstract class Template {
  2. abstract void code();
  3. public void countTime() {
  4. long start = System.currentTimeMillis();
  5. code();
  6. long end = System.currentTimeMillis();
  7. System.out.println("cost time(s):" + (end - start));
  8. }
  9. }
时间: 2024-10-17 16:46:04

模板方法(TemplateMethod)的相关文章

Java 实现模板方法(TemplateMethod)模式

类图 /** * 业务流程模板.提供基本框架 * @author stone * */ public abstract class BaseTemplate { public abstract void part1(); public abstract void part2(); public abstract void part3(); //这里为了严格实验结果,使用final不可被重写 public final void useTemplateMethod() { part1(); part

调侃《Head First设计模式》之模板方法模式

现在有两个人,一个爱喝咖啡,一个爱喝茶,让我们用代码创建咖啡和喝茶: 咖啡类: 茶类: 很容易发现,咖啡喝茶的代码有惊人的相似. 经过之前设计模式的阅读,你应该已经有意识的把相同的部分抽取出来.pourInCup和boilWater方法相同,于是可以考虑将它们整合到一个公共的类中,我们可以这样设计: CaffeineBeverage是一个公共类,咖啡喝茶是它的子类,继承了相同的方法. 等下,难道相同的部分就这样?no. brewCoffeeGrinds()和steepTeaBag()两个方法,一

18 行为型模式-----模板方法模式

模式动机(Template Method Pattern):所谓模板,就是具有通用性的一个框架,在不同的具体环境下可以匹配不同的行为.在程序设计中,代码的复用一直是人们追求的目标,更好地利用已有的设计,不仅可以极大地提高开发效率,而且也能保证软件本身的鲁棒性. 一种代码复用的基本原则就是继承机制,但是我们也知道,普通的继承可能会造成派生类比较臃肿,具有“强制性”实现的特性,特别是基类为抽象接口时更是如此.如何让基类承担更多的一般性职责,这就是模板方法模式所解决的问题了. 在模板方法中,将算法的框

细说设计模式之模板方法

1. 模板方法模式概述 模板方法模式定义如下: 模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式. 模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系.通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来

设计模式之模板方法模式(Template Method)详解及代码示例

一.模板方法模式的定义与特点 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤.它是一种类行为型模式. 二.模板方法模式优缺点 该模式的主要优点如下. 它封装了不变部分,扩展可变部分.它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展. 它在父类中提取了公共的部分代码,便于代码复用. 部分方法是由子类实现的,因此子类可以通过扩展

Head First 设计模式系列之一----模板模式

开篇序言:四人帮的设计模式对于我这个菜鸟看着打瞌睡,后面果断买了一本head first的,感觉还可以像看报纸似的,花了一个寒假的晚上看了大半,确实内容也挺吸引人的,讲的很风趣.否则我也不可能,大过年的小伙伴们还在外面耍,自己还在那里装B.可是看完的困惑也随之而来,我怎么才能熟练的操练这些模式呢!书上讲的头头是道,可是实际中我们确不知道怎么运用!后面看到别人牛逼的都是随便一个模式都能脱口面而出,还有就是实际项目接触多了,肯定也有一定的职业嗅觉!所以希望自己也能够通过写博客,让自己对设计模式有一个

设计模式(1)-行为类

参考文章: 史上最全设计模式导学目录(完整版): http://blog.csdn.net/lovelion/article/details/17517213 一.六大原则简述 单一职责:不要存在多于一个导致类变更的原因.**通俗的说,即一个类只负责一项职责. 里式替换:所有引用基类的地方必须能透明地使用其子类的对象.重载须慎重,能不重载就不重载. 依赖倒置:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 接口隔离:客户端不应该依赖它不需要的接口:一个类

templateMethod(模板方法模式)

MakeCar.java package edu.hhxy; /* * 组装车 */ public abstract class MakeCar { //组装车头 public abstract void makeHead(); //组装车身 public abstract void makeBody(); //组装车尾 public abstract void makeTail(); public void make() { this.makeHead(); this.makeBody();

java设计模式(9):模板方法模式(TemplateMethod)

一,定义:模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 二,类图: 三,通过小例子讲解: 这个模式一般用在程序的步骤比较多,而且有固定的模式,固定的步骤,而每一步的实现又有多种情况,这是我们可以使用TemplateMethod模式.这样可以保证算法骨架的正确性,又将多态运用的非常好. 这里举个人一天要做的事情吧,假如一个人一天要有起床,吃饭,做事情,睡觉四个事项. 1,首先我们看模板类: [java] 

设计模式入门之模板方法模式TemplateMethod

模板方法模式定义: 定义一个算法的骨架,而将步骤延迟到子类中.这种模式可以使得在不改变算法骨架(模板)的情况下修改每个步骤的具体实现 从功能上来看,这个模式跟生成器模式有些相像,只不过生成器模式定义了创建对象的过程,而模板方法模式定义了算法过程 感觉这个模式要简单很多. 钩子:可以被子类覆盖以实现扩展的方法通常叫做钩子 实例:用户登录过程,分为后台人员登录和用户登录,这是一个非常成型的技术过程,是非常典型的模板方法模式的应用,其中普通用户密码不需要加密,而工作人员的密码需要进行加密比对.上代码