- 浏览: 33175 次
- 性别:
- 来自: 上海
最新评论
引用
整理自 《java与模式》阎宏编著
1.意图:
定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中。模版方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。
2.类图:
3.原理:
抽象模板角色(AbstractClass):给出一个具体的方法,称为模版方法,它定义了整个算法的逻辑骨架,而算法的可变部分定义为抽象方法或者提供默认实现,将实现延迟到子类中。
具体模板角色(ConcreteClass):实现抽象模板所定义的可变的抽象操作。
4.特征:
模板模式中的方法分为:模板方法(TempleteMethod)和基本方法(primitive Method)。
模板方法(TempleteMethod):抽象模板中定义的具体方法,通常定义为final。
基本方法(primitive Method)分为:抽象方法,具体方法,钩子方法。
a. 抽象方法: 抽象模板中定义为抽象方法,由子类实现。
b. 具体方法: 抽象模板中提供默认实现。
c. 钩子方法:抽象模板中定义并提供默认实现(通常是空实现),在子类中覆盖或扩展。
5.说明:
模板方法模式中,抽象类的模板方法应该声明为final的,从而保证了子类的逻辑永远由父类所控制。
6.使用案例:
HttpServlet
7.代码:
// AbstractClass.java 抽象模板 public abstract class AbstractClass { /** * Primitive operation */ public abstract void doOperation1(); /** * Primitive operation */ public abstract int doOperation2(); /** * Defines the skeleton of an algorithm. Calls primitive operations as well as operations defined in AbstractClass or those in other objects. */ public final void templateMethod() { //something happens here... doOperation1(); //... //later we need another step doOperation2(); //something more } } // ConcreteClass.java 具体模板 public class ConcreteClass extends AbstractClass { public void doOperation1() { /* put implementation of particular step of template method here*/ } public int doOperation2() { /* put implementation of particular step of template method here*/ return 0; } }
发表评论
-
状态模式
2013-06-26 16:38 512引用http://blog.csdn.net/hguisu/a ... -
策略模式
2013-06-24 18:28 536定义 策略模式(Strategy)属于对象行为型设计模式,主要 ... -
代理模式-动态代理
2013-06-20 16:37 470转自:http://www.cnblogs.com/jqyp/ ... -
观察者模式-JDK支持
2013-06-18 14:39 382JDK对观察者模式的支持主要是通过Observable类和Ob ... -
观察者模式
2013-06-18 13:31 342GoF说道:Observer模式的意图是“定义对象间的一种一对 ... -
备忘录模式
2013-06-14 15:45 357转载:http://blog.csdn.net/m136663 ... -
java 中介者模式
2013-06-07 16:19 567定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需 ... -
迭代器模式
2013-06-07 11:18 621定义:提供一种方法访 ... -
命令模式
2013-06-05 16:56 723定义 将一个请求封装为 ... -
责任链模式
2013-06-03 16:46 528转自:《深入浅出设计 ... -
代理模式
2013-05-27 11:07 406一、简介 代理模式有两 ... -
享元模式
2013-05-23 16:43 498一、引子 让我们先来复习下 java 中String 类型的特 ... -
门面模式
2013-05-21 15:28 399转自http://www.cnblogs.com/java-m ... -
装饰模式
2013-05-21 11:03 315动态地给一个对象添加一些额外的职责。就增加功能来说,Decor ... -
组合模式
2013-05-20 16:21 673一、引子 在大学的数据 ... -
桥接模式
2013-05-10 11:05 569认识桥接模式 (1)什么是桥接 在桥接模式里面 ... -
适配器模式
2013-05-08 14:04 5971. 概述 将一个类的接口转换成客户希望的另外一个接口 ... -
原型模式
2013-04-22 14:53 610转自:http://blog.csdn.net/zhengzh ... -
单态模式
2013-04-22 14:24 570保证一个类仅有一个实例,*提供一个访问它的全局访*点。 适 ... -
建造者模式
2013-04-18 10:27 611转自:http://www.2cto.com/kf/20120 ...
相关推荐
java的23种常用设计模式:模板方法模式
适合20分钟左右讲解的模板方法模式。 自己上课用的。
模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
设计模式-模板方法模式(讲解及其实现代码)
设计模式C++学习之模板方法模式(Template Method)
设计模式模板方法模式PPT学习教案.pptx
模板方法模式的示例代码和文档,学习模板方法模式的参考资料。
模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一。在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。 在模板方法模式中,我们...
策略模式结合模板方法模式
iOS模板方法模式使用心得demo
模板方法模式例子代码
处理层的设计采用了设计模式中的策略模式、模板方法模式和工厂模式。 Server端和Client端的实现也采用了分层的设计方式,包含自定义的模型层、视图层和控制层。 说明:程序采用配置文件的方式进行初始化,运行时时请...
设计模式--模板方法模式java例子
Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现
模板方法模式是一种行为设计模式,它在一个方法中定义算法的骨架,将一些步骤延迟到子类中实现。 具体来说,模板方法模式的关键特点包括: 抽象类:在抽象类中定义一个模板方法,该方法给出了算法的框架。 具体...
将《Head First 设计模式》(中文版)按章节进行了分割,每章一个文件,方便大家下载。