模板消息设计模式

模板设计模式

设计模式概念

设计模式就是解决一些问题时的固定思路,也就是代码设计思路经验的总结。

模板设计模式概述

  • 针对某些情况,在父类中指定一个模板,然后根据具体情况,在子类中灵活的具体实现该模板
public abstract class Person{
// 有方法体的方法: 通用模板
public void sleep(){
System.out.println("两眼一闭,就睡觉...");
}
// 没有方法体的方法(抽象方法): 填充模板(要子类重新实现的)
public abstract void eat();
}
  • 抽象类体现的就是模板设计思想,模板是将通用的东西在抽象类中具体的实现,而模板中不能决定
    的东西定义成抽象方法,让使用模板(继承抽象类的类)的类去重写抽象方法实现需求

模板模式的实现步骤

  • 1.定义抽象父类作为模板
  • 2.在父类中定义"模板方法"— 实现方法(通用模板)+抽象方法(填充模板)
  • 3.子类继承父类,重写抽象方法(填充父类的模板)
  • 4.测试类:
    • 创建子类对象,通过子类调用父类的“实现的方法”+ “子类重写后的方法”
案例演示

假如我现在需要定义新司机和老司机类,新司机和老司机都有开车功能,开车的步骤都一样,只是驾驶
时的姿势有点不同, 新司机:开门,点火,双手紧握方向盘,刹车,熄火 , 老司机:开门,点火,右手握方向盘左手
抽烟,刹车,熄火 。那么这个时候我们就可以将固定流程写到父类中,不同的地方就定义成抽象方法,让
不同的子类去重写

分析:

  • 司机类
    • 开车方法: 确定实现–通用模板
      • 开门
      • 点火
      • (姿势)
      • 刹车
      • 熄火
    • 姿势方法: 不确定实现–填充模板
  • 新司机类继承司机类,重写姿势方法
  • 老司机类继承司机类,重写姿势方法

父类java代码:

// 父类
public abstract class Driver {
// 开车方法 通用模板
public void driveCar(){
System.out.println("开门");
System.out.println("点火");
// 姿势??
ziShi();
System.out.println("刹车");
System.out.println("熄火");
}
// 姿势方法 填充模板
public abstract void ziShi();
}

现在定义两个使用模板的司机:

public class NewDriver extends Driver {
@Override
public void ziShi() {
System.out.println("双手紧握方向盘");
}
}
public class OldDriver extends Driver {
@Override
public void ziShi() {
System.out.println("右手握方向盘左手抽烟");
}
}

编写测试类

public class Test {
public static void main(String[] args) {
// 创建新司机对象
NewDriver d1 = new NewDriver();
d1.driveCar();
// 创建老司机对象
OldDriver d2 = new OldDriver();
d2.driveCar();
}
}

运行效果:
在这里插入图片描述

可以看出,模板模式的优势是,模板已经定义了通用架构,使用者只需要关心自己需要实现的功能即可!非常的强大!

总结:

1.定义一个抽象类作为父类
2.在抽象类中,该模板可以确定的功能,就定义成一个有方法体的方法,作为通用模板
3.在抽象类中,该模板不可以确定的功能,就定义成一个抽象方法,作为填充模板
4.让需要使用该模板的类,去继承该抽象类,填充模板\使用模板

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值