模板方法模式
模板方法模式是一种类行为型模式,模板方法是一个算法的抽象定义,它逐步地定义该算法,每一步调用一个抽象操作或一个原语操作,子类定义抽象操作以具体实现该算法。
定义
定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
使用场景
- 一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。
- 各子类中公共行为应该被提取出来并集中到一个公共父类中以避免代码重复
- 控制子类扩展。
结构
实现
public abstract class AbstractClass {
public void templateMethod(){
primitiveOperation1();
primitiveOperation2();
}
protected abstract void primitiveOperation1();
protected abstract void primitiveOperation2();
}
public class ConcreteClass extends AbstractClass {
@Override
protected void primitiveOperation1() {
System.out.println("primitiveOperation1");
}
@Override
protected void primitiveOperation2() {
System.out.println("primitiveOperation2");
}
}
模板方法相对来说比较简单,也比较实用,常用的自定义Servlet应用了这一模式,HttpServlet担任抽象模板角色,模板方法:由service()方法担任。基本方法:由doPost()、doGet()等方法担任。