设计模式——模板模式

一、介绍

在模板模式中,一个抽象类公开定义了执行它的方法的方式/模式,让子类不改变算法架构的情况下,重新定义算法中的某些步骤。

UML类图如下:

二、何时使用

有一些通用的方法,但是每个子类都需要重写 的时候

三、实现

我们以造汽车为例,比如每个汽车都有鸣笛、启动、停止……这些功能,我们可以将这些动能抽象出来,然后子类各自实现,但是他们的运行顺序时不能变的,启动-->鸣笛-->停止这个执行顺序是不可以变的。

public abstract class CarModel {

    protected abstract void whistle();

    protected abstract void startCar();

    protected abstract void stopCar();

    public final void run(){
        startCar();
        whistle();
        stopCar();
    }
}
public class MyCar extends CarModel {

    @Override
    protected void whistle() {
        System.out.println("我的汽车鸣笛……");
    }

    @Override
    protected void startCar() {
        System.out.println("我的汽车启动……");
    }

    @Override
    protected void stopCar() {
        System.out.println("我的汽车停车……");
    }
}
  public static void main(String[] args) {
        MyCar myCar = new MyCar();
        myCar.run();
    }

四、优缺点

优点:​​​​​​​​​​​​​​

1、封装不变部分,扩展可变部分

2、提取公共代码便于维护

3、行为由父类控制,子类实现

缺点:每一个实现都要增加一个子类,导致类数量增加使得系统功能加庞大。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值