一、定义:
定义一个操作的算法的骨架,而将一些不确定的业务,抽象成一个抽象方法。延迟到子类去具体的实现它。模板方法使得子类可以不改变一个算法的结构即可重定义改算法的某些特定步骤。
二、示例代码:
public abstract class AbstractClass {
public void templateMethod(){
method1();
method2();
}
public abstract void method1();
public abstract void method2();
}
public class ConcreateClass1 extends AbstractClass {
@Override
public void method1() {
}
@Override
public void method2() {
}
}
public class ConcreateClass2 extends AbstractClass {
@Override
public void method1() {
}
@Override
public void method2() {
}
}
三、应用:
假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码。