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

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

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

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

这里写图片描述

这里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

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值