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

来源:互联网 发布:淘宝店铺可以注销吗 编辑:程序博客网 时间:2024/05/16 12:29

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

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

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

这里写图片描述

这里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();    }}

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

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

微信公众号:

这里写图片描述

QQ群:365473065

原创粉丝点击