欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式之模板模式

程序员文章站 2022-06-13 13:22:33
...

模板模式

完成一件事,有固定的步骤,但是每个步骤可以有不同的实现,就可以在父类中定义一个方法来调度这些步骤,而这些步骤的具体实现由子类来完成,下图中的add()方法即具体实现。
简而言之就是将子类中的共同方法提取出来,由父类来完成。
设计模式之模板模式

public abstract class SoyaMilk {
    final void make(){
        select();
        addCondiments();
        soak();
        beat();
    }
    void select(){
        System.out.println("第一步:选好新鲜黄豆。。。");
    }

    abstract void addCondiments();

    void soak(){
        System.out.println("第三步:黄豆和配料浸泡3小时");
    }

    void beat(){
        System.out.println("第四步:黄豆和配料放到豆浆机搅拌");
    }
}
public class BlackBeanSoyaMilk extends SoyaMilk {
    @Override
    void addCondiments() {
        System.out.println("第二步:加入上好的红豆");
    }
}
public class PeanutSoyaMilk extends SoyaMilk {
    @Override
    void addCondiments() {
        System.out.println("第二步:加入上好的花生");
    }
}
public class Client {
    public static void main(String[] args) {
        System.out.println("——————————制作红豆豆浆——————————");
        SoyaMilk blackBeanSoyaMilk = new BlackBeanSoyaMilk();
        blackBeanSoyaMilk.make();
        System.out.println("——————————制作花生豆浆——————————");
        SoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();
        peanutSoyaMilk.make();
    }
}

控制台输出

——————————制作红豆豆浆——————————
第一步:选好新鲜黄豆。。。
第二步:加入上好的红豆
第三步:黄豆和配料浸泡3小时
第四步:黄豆和配料放到豆浆机搅拌
——————————制作花生豆浆——————————
第一步:选好新鲜黄豆。。。
第二步:加入上好的花生
第三步:黄豆和配料浸泡3小时
第四步:黄豆和配料放到豆浆机搅拌

钩子方法

在模板模式的父类中,我们可以定义一个方法,它默认不做任何事情,子类可以视情况要不要覆盖它,该方法称为“钩子”。

相关标签: java