模板方法模式的结构
抽象模板(Abstract Template)角色有如下责任:
定义一个或者多个抽象方法提供给子类实现。
提供模板方法定义为final避免子类修改,然后在方法中定义执行顺序。
具体模板(Concrete Template)角色又如下责任:
实现父类的所有抽象方法。
每个模板方法都可以具有不同的实现方式。
模板模式的关键是:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。
参见代码:
public abstract class AbstractClass {
public abstract void oper1();
public abstract void oper2();
public abstract void oper3();
public final void templateMethod() {
this.oper1();
this.oper2();
this.oper3();
}
}
public class ConcreteClass extends AbstractClass {
@Override
public void oper1() {
System.out.println("操作1");
}
@Override
public void oper2() {
System.out.println("操作2");
}
@Override
public void oper3() {
System.out.println("操作3");
}
}
常见模板方法:HttpServlet, Android Activity生命周期