Template Method:模板方法模式,定义一个操作的算法骨架,而将一些步骤延迟到子类中,Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
经典应用:
- HttpServlet 的 service() 方法,提供了 doGet()、doPost() 等模板方法便于用户实现
Spring MVC 的 AbstractController 的 handleRequest() 方法,提供了 handleRequestInternal() 方法方便用户实现
public class TemplateMethod {
public static void main(String[] args) {
AbstractClass clazz = new SubClass();
clazz.operation();
}
// 封装了模板方法的数据结构
abstract static class AbstractClass {
public void operation(){
// open
System.out.println("pre ...");
System.out.println("step1 ...");
System.out.println("step2 ...");
templateMethod();
// close
System.out.println("close ...");
}
// 提供给子类进行自定义实现的方法
protected abstract void templateMethod();
}
static class SubClass extends AbstractClass{
@Override
protected void templateMethod() {
System.out.println("SubClass ...");
}
}
}