what
钩子,本质就是一个方法。(不同的场景对钩子的定义不同)
windows 的消息处理中,钩子是一个监听器的回调函数
模板方法模式中,通过继承的方式来决定一个方法是否执行,钩子是这个用于判断的抽象方法
why
用处:当你在设计时有一个方法是根据子类的具体实现判断其是否执行时,可以将该判断方法设置为钩子方法
场景:当订单满足100元时,免邮费
how
public abstract class OrderCost {
protected abstract boolean isFreePostage();
public abstract void addPostage();
public abstract void totalCost();
public void template() {
if (!isFreePostage()) {
addPostage();
}
totalCost();
}
}
isFreePostage() 就是钩子方法
子类可以通过扩展钩子方法来增加额外的功能。