介绍
定义一个操作的算法框架,将一些步骤实现延迟到子类中。模板方法可以让子类在不更改算法结构的情况下修改特定步骤。
如果很多类都实现通用的方法,那可以用模板方法将这些通用方法提取到抽象类中,让子类实现特定步骤。
优点
- 封装不变算法部分,扩展可变具体实现。
- 提取公共代码,便于维护。
- 复合开闭原则。
实现
public class TemplateMethodTest {
public static void main(String[] args) {
AbstractClass abstractClass=new SubClass1();
abstractClass.operation();
}
}
abstract class AbstractClass{
//算法实现
public void operation(){
System.out.println(" 步骤1 ");
System.out.println(" 步骤2 ");
System.out.println(" 步骤3 ");
templateMethod();
// 其他步骤
}
abstract protected void templateMethod();
}
class SubClass1 extends AbstractClass{
@Override
protected void templateMethod() {
System.out.println("SubClass1实现特定步骤");
}
}
class SubClass2 extends AbstractClass{
@Override
protected void templateMethod() {
System.out.println("SubClass2实现特定步骤");
}
}
源码应用
org.springframework.web.servlet.mvc.AbstractController