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

阅读: 评论:0

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

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

模板方法概念

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

模板方法类关系图

模板方法代码

设计模板抽象类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();

    }

}

运行结果

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

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

一句话总结模板方法

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

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


 

本文发布于:2024-01-28 06:13:49,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063936355382.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:给大家   一文   读懂   模板   模式
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23