一文读懂Java中的设计模式——模板方法,给大家的代码添点料!

104 篇文章 10 订阅
61 篇文章 1 订阅

模板方法概念

模板设计模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。

模板方法类关系图

模板方法代码

设计模板抽象类Vehicle提供抽象方法start、stop、alarm,最关键的是提供方法run,里面限定了start、stop、alarm的运行顺序!

注意:run方法只是限定各个方法的运行顺序,并不关注每个方法的具体实现细节

public abstract class Vehicle {
    //首先是车要能发动
    public abstract void start();

    //能发动,那还要能停下来
    public abstract void stop();

    //喇叭会出声音,是滴滴叫,还是哔哔叫
    public abstract void alarm();

    //那模型应该会跑吧,管是人推的,还是电力驱动,总之要会跑
    public void run() {
        // 先发动汽车
        this.start();
        // 引擎开始轰鸣
        this.alarm();
        // 到达目的地就停车
        this.stop();
    }

设计类Car继承Vehicle,重写了start、stop和alarm方法

public class Car extends Vehicle {

    @Override
    public void start() {
        
        System.out.println("汽车通过发动机启动");
        
    }

    @Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("汽车通过踩刹车方式停车");
        
    }

    @Override
    public void alarm() {
        // TODO Auto-generated method stub
        System.out.println("汽车按喇叭,嘀嘀嘀");
        
    }

}

设计类Bike继承Vehicle,重写了start、stop和alarm方法

public class Bike extends Vehicle {

    @Override
    public void start() {
        
        System.out.println("自行车通过链条齿轮启动");
        
    }

    @Override
    public void stop() {
        // TODO Auto-generated method stub
        System.out.println("自行车通过手闸方式停车");
        
    }

    @Override
    public void alarm() {
        // TODO Auto-generated method stub
        System.out.println("自行车按铃,铃铃铃");
        
    }

}

编写模板方法测试类,可以看到不同的实例执行抽象类Vehicle的 run方法后,输出了各自start、stop、alarm方法的实现

public class TestTemplate {

    public static void main(String[] args) {
        
        Vehicle car=new Car();
        car.run();
                
        
        Vehicle bike=new Bike();
        bike.run();

    }

}

运行结果

汽车通过发动机启动
汽车按喇叭,嘀嘀嘀
汽车通过踩刹车方式停车
自行车通过链条齿轮启动
自行车按铃,铃铃铃
自行车通过手闸方式停车

如果想下载源码,可以下载

https://download.csdn.net/download/liwenxiang629/88628190

一句话总结模板方法

抽象类中的方法run能够限定各个子类方法start、stop、alarm的运行顺序,而并不关注每个方法的具体实现细节

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!


 

  • 21
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值