前言
本文主要内容
- 介绍模板方法模式
- 使用模板方法模式
正文
介绍模板方法模式
定义
Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.(定义一个操作中的算法的框架, 而将一些步骤延迟到子类中。 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 ) -设计模式之禅 第2版
描述成代码的话,就是在抽象类中,将步骤写死,不可继承修改,而每个步骤中的具体算法则交由子类来实现。
通用类及类图
类图
代码
步骤不可以修改,因此使用final修饰,不可以继承。每一步的算法是必须得由子类实现的,因此不需要访问父类,使用protected限制下。
public abstract class AbstractClass {public final void templateMethod(){method1();method2();}protected abstract void method1();protected abstract void method2();}
在实现类中将每步的算法实现好了
public class ConcreteClass1 extends AbstractClass{@Overrideprotected void method1() {}@Overrideprotected void method2() {}}
作用
主要有两个作用,复用与扩展。这两个很好理解,复用就是指流程的复用,扩展就是流程中每一步的具体算法可以不同。
使用模板方法模式
珠玉在前,之间看现成的好了。看一下Servlet中的应用。
(HttpServlet类)

运行后,浏览器中输入URL并回车后,Servlet容器会找到对应的Servlet类,然后执行service.实现流程的复用,通过继承HttpServlet,来重写doGet,doPost等等之类的方法,来实现业务的扩展
