公用技术——设计模式18——行为型模式——模板模式

1、概念

  模板模式是规范定义流程,并将公共流程和独立流程分离,在父类中实现公共流程,在具体的子类中实现独立流程,不同的子类提供各自独立流程的实现方式。

  流程也可以表述为算法。

  父类的职责是规范流程,它的方式可以是接口,也可以是抽象类,如果有公共的流程,最好使用抽象类,使用abstract修饰独立流程的方法,为公共流程提供通用的实现方式。

  子类的职责是提供独立流程的实现方式。

2、UML图

  

3、代码

  父类ParentClass,规范流程,提供公共流程的实现

/**
 * 
 * @Title: ParentClass.java
 * @Package template
 * @Description: 规范流程,并为公共的流程提供通用实现。
 * @version V1.0
 */
public abstract class ParentClass {
	/**
	 * 
	 * @Title: commonStep
	 * @Description: 这个方法规范流程,不允许子类重写,所以使用final修饰
	 */
	public final void commonStep() {
		commonStep1();
		commonStep2();
		independentStep();
	}

	/**
	 * 
	 * @Title: commonStep1
	 * @Description: 公共流程1
	 */
	private void commonStep1() {

	}

	/**
	 * 
	 * @Title: commonStep2
	 * @Description: 公共流程2
	 */
	private void commonStep2() {

	}

	/**
	 * 
	 * @Title: independentStep
	 * @Description: 独立流程,需要子类去实现
	 */
	public abstract void independentStep();
}

  子类ChildClassOne,提供独立流程的实现

/**
  * @Title: ChildClassOne.java  
  * @Package template  
  * @Description: 子流程,提供独立流程的实现方式  
  * @version V1.0
 */
public class ChildClassOne extends ParentClass {

	@Override
	public void independentStep() {
		System.out.println("独立流程的第一种实现方案");
	}
}

4、讨论

  上述的实现方式可以进一步修改为

  1. ParentInterface,父接口。
  2. ParentClass,实现ParentInterface,还是抽象类。
  3. ChildClassOne:继承ParentClass,提供独立流程的实现方式。

  模板模式中核心是流程的制定,公共流程和独立流程的分离。其中流程规范和公共流程是不允许修改的。

5、示例

Servlet的生命周期。

原文地址:https://www.cnblogs.com/rain144576/p/9940868.html