模板方法模式
一、定义
定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使子类重新定义算法的某些特定步骤而不改变算法的结构。
二、类图表示

三、实现
1、AbstractClass
package pattern.behavioral.templatemethod;
public abstract class AbstractClass {
	public abstract void primitiveOperation1();
	public abstract void primitiveOperation2();
	public void templateMethod(){
		System.out.println("do something...");
		primitiveOperation1();
		System.out.println("do other something...");
		primitiveOperation2();
	}
}
2、ConcreteClass
package pattern.behavioral.templatemethod;
public class ConcreteClass extends AbstractClass {
	@Override
	public void primitiveOperation1() {
		System.out.println("called ConcreteClass primitiveOperation1()");
	}
	@Override
	public void primitiveOperation2() {
		System.out.println("called ConcreteClass primitiveOperation2()");
	}
}
四、使用
package pattern.behavioral.templatemethod;
public class Client {
	public static void main(String[] args) {
		AbstractClass c = new ConcreteClass();
		c.templateMethod();
	}
}
- 程序输出:
do something...
called ConcreteClass primitiveOperation1()
do other something...
called ConcreteClass primitiveOperation2()
五、适用场合
- 一次性实现一个算法不变的部分,将可变的部分留到子类中实现
- 子类中共有的行为应该被提取到父类中以避免代码重复
- 控制子类的扩展(只允许在特定的点扩展)