Java23种设计模式——模板模式

该系列文章为博主学习笔记,原文请参考参考链接
本文禁止转载,但是欢迎大家留言区留言交流[微笑]

模板模式是一种类继承模式,主要是通过一个抽象类,把子类一些共有的类提取出来(称为基本方法),放到抽象类中,并在抽象类中定义一个模板方法,在模板方法中规定基本方法的执行顺序。将不同的实现细节交给子类去实现。

例如小明和小华每天上学前都要叠好被子,吃早餐,然后去上学,只不过小明是乘坐公交车去上学,而小华是骑自行车上学。在叠被子和吃早餐这两件事情是他们共有的,我们可以提取出来放到父类去实现,而去上学这件事情,出现了偏差,两个人的实现方式不同,所以不能放在父类去实现,应该交给子类去实现。

Java23种设计模式——模板模式_第1张图片

这里doquilt()和eatfastbreak()分别对应叠被子和吃早饭,因为没有差异,所以我们放在抽象类中,模板方法 templateMethod()分别对这三个方法调用,规定了调用的顺序,而gotoschool()方法因为小明和小华两个人实现不同,所以我们一般定义为抽象的方法,由子类去实现。

代码:

public abstract class GoSchool {
    public void templateMethod() {
        doquilt();
        eatfastbreak();
        gotoschool();
    }

    public void doquilt() {
        System.out.println("叠被子");
    }

    public void eatfastbreak() {
        System.out.println("吃早餐");
    }

    public abstract void gotoschool();
}
public class XiaoHua extends GoSchool {
    @Override
    public void gotoschool() {
        System.out.println("骑自行车");
    }
}
public class XiaoMing extends GoSchool {
    @Override
    public void gotoschool() {
        System.out.println("乘坐公交车");
    }
}
public class myClass {
    public static void main(String[] args){
        GoSchool goSchool=new XiaoMing();
        goSchool.templateMethod();
    }
}

输出:
叠被子
吃早餐
乘坐公交车

通过模板模式,将公共的行为放到父类中去实现,子类实现不同的细节,很大程度上加大了代码的复用,并且子类的更改不会影响到父类,更改和增加新的子类很方便,符合单一职责和开闭原则。

微信公众号:

Java23种设计模式——模板模式_第2张图片

QQ群:365473065

你可能感兴趣的:(Java设计模式)