定义
定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。
适用场景
一次性实现一个算法的不变部分,并将可变的行为留给子类来实现
优点
提高复用性
提高扩展性
符合开闭原则
示例代码
public abstract class CookCake {
public final void cookCake(){
System.out.println("放黄油,面粉,糖");
if(putNuts()){
System.out.println("放坚果");
}
System.out.println("制作完成");
}
/*
钩子函数,子类中可以重写此方法
*/
protected Boolean putNuts(){
return false;
}
}
public class NutCake extends CookCake{
@Override
protected Boolean putNuts() {
return true;
}
}