Java设计模式之模版方法模式

本文介绍了模板方法模式,这是一种行为设计模式,用于在抽象类中定义算法的骨架,允许子类替换具体步骤。通过一个车的模型示例,展示了如何使用模板方法模式来定义宝马车的基本操作如鸣笛、启动、停车,并在测试方法中调用这些操作。子类可以通过重写具体步骤来实现不同行为,而无需修改测试方法。模板方法模式有助于保持代码结构一致,遵循开闭原则。
摘要由CSDN通过智能技术生成

模版方法模式介绍

模版方法的写法很简单,使用的场景是,抽象类中的某个方法(称为模版方法)调用了抽象类中的其他基本方法,那么在继承这个抽象类时,就不必重写这个模版方法,而只需要重写其他基本方法。

模版方法样例

有这样的一个场景,在生产宝马车之前我们要有一个车的基础模型,这个模型规定了宝马车的基本功能,如鸣笛、启动、停车,模型还规定了要对宝马车进行测试:即调用鸣笛、启动、停车的功能,这样测试方法就可以当做一个模版方法,在父类中写了之后,子类不需要重写。

宝马模型定义:

一般模版方法都用final修饰,不允许被重写。

public abstract class BWMModel {
    protected abstract void alarm();    //鸣笛
    protected abstract void start();    //启动
    protected abstract void stop();     //停车

    protected abstract boolean isRoadster();    //是否为跑车
    protected abstract void drift();         //漂移  只有跑车车型才能漂移

    //模版方法,测试车辆的启动、鸣笛、停车功能
    public final void testThisCar() {
        this.start();
        this.alarm();
        if(isRoadster()) {
            drift();
        }
        this.stop();
    }
}

具体的宝马车:

public class BWMCar1 extends BWMModel {
    protected void alarm() {
        System.out.println("鸣笛");
    }

    protected void start() {
        System.out.println("启动");
    }

    protected void stop() {
        System.out.println("停车");
    }


    protected boolean isRoadster() {
        return true;
    }

    protected void drift() {
        System.out.println("闪电漂移~");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值