设计模式之模板方法(template method)

它的定义如下:

Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses define certain steps of an algorithm without changing the algorithm's structure. 即定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可冲定义该算法的某些特定步骤。模板方法模式的通用类图如下:

模板方法模式的结构

模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。

模板方法模式是需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称作基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method),这个设计模式的名字就是由此而来。

Java 模板方法 示例

public abstract class AbstractTemplate {
	public abstract void doWork1();
	public abstract void doWork2();
	/**
	 * 做一件事,都要经过work1, work2, 而且它们的顺序不变,每次都要经过这两个
	 */
	public void start()
	{
		doWork1();
		doWork2();
	}
}


public class Worker extends AbstractTemplate {
	@Override
	public void doWork1() {
		LogHelper.log("做第一件事.................");
	}
	@Override
	public void doWork2() {
		LogHelper.log("做第二件事.................");
	}
	public static void main(String[] args)
	{
		AbstractTemplate tmp = new Worker();
		tmp.start();
	}
}