JAVA:关于模板模式

请教下模板模式
public abstract class Template { //抽象模板
protected abstract void eatBreakfast();

protected abstract void wash();

protected abstract void dressUP();

public final void morning() {
    System.out.println("---起床---");
    wash();
    dressUP();
    eatBreakfast();
    System.out.println("---去上班---");
}

}
public class DailyLifeA extends Template { //实现模板
public void eatBreakfast() {
System.out.println("喝牛奶");
}

public void wash() {
    System.out.println("洗澡");
}

public void dressUP() {
    System.out.println("穿正装");
}

}
public class Client{ //客户端

public static void main(String[] ags) {

    Template template;

    template = new DailyLifeA(); 
    template.morning();

    template = new DailyLifeB();
    template.morning();
}

}

输出结果:
---起床---
洗澡
穿正装
喝牛奶
---去上班---

这样是吧某些流程都封装起来等待子类来实现了 但是如果我的流程改变了 我的某个实现不想要eatBreakfast()这个步骤了,但是如果不实现这个的话程序还会报错该怎么办呢?网上搜了下说是用钩子调用控制流程-。-但还是么有理解呀

钩子方法是可选择实现的逻辑,不是必须实现的。

默认钩子方法:一个钩子方法常常由抽象类给出一个空实现作为此方法的默认实现。这种空的钩子方法叫做“Do Nothing Hook”。

命名规则:钩子方法的名字应当以do开始,这是熟悉设计模式的Java开发人员的标准做法。

按照你的需求,你的钩子方法应该这样来设计:
public abstract class Template {
protected abstract void doEatBreakfast() {}
}