public class TestTemplate {
public static void main(String[] args) {
AbstractTemplate t=new ConcreteTemplate();
t.templateMethod();
}
}
public abstract class AbstractTemplate {
public void templateMethod(){
init();
apply();
end();
}
protected void init() {
System.out.println("init 抽象层已经实现,子类也可以选择覆写");
}
protected abstract void apply();
protected void end() {
System.out.println("钩子方法,调用回来了");
}
}
public class ConcreteTemplate extends AbstractTemplate {
@Override
public void apply() {
System.out.println("子类实现抽象方法 apply");
}
public void end(){
super.end();
}
}
