//抽象类 封装算法框架
public abstract void AbstractTemplate{
public finial void template{
first();
second();
if(hook()){
third();
}
}
private void first(){
}
protected abstract void second();
protected bool hook(){
return true;
}
private void third(){
}
}
//具体子类 实现算法框架中的抽象方法、覆盖钩子函数
public class subclass1 extends AbstractTemplate{
@Override
protected void second(){
}
@Override
protected bool hook(){
return false;
}
}
//使用
AbstractTemplate sub=new subclass1();
sub.template();