0%

设计模式之行为型模式(十):模板方法模式

1. 模板方法概述

  • 概述

    • 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
  • 特点

    • 通俗地说,模板方法模式就是一个关于继承的设计模式
    • 每一个被继承的父类都可以认为是一个模板,它的某些步骤是稳定的、某些步骤被延迟到子类中实现
    • 在使用模板方法模式时,我们可以为不用的模板方法设置不同的控制权限
      • 如果不希望子类覆写模板中的某个方法,使用 final 修饰此方法
      • 如果要求子类必须覆写模板中的某个方法,使用 abstract 修饰此方法
      • 如果没有特殊要求,可使用 protectedpublic 修饰此方法,子类可根据实际情况考虑是否覆写
  • Demo

    • 父类模板

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      abstract class LeaveRequest {

      void request() {
      System.out.print("本人");
      System.out.print(name());
      System.out.print("因");
      System.out.print(reason());
      System.out.print("需请假");
      System.out.print(duration());
      System.out.print("天,望批准");
      }

      abstract String name();

      abstract String reason();

      abstract String duration();
      }
    • 子类:继承此模板,实现具体步骤

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      class MyLeaveRequest extends LeaveRequest {
      @Override
      String name() {
      return "老隋";
      }

      @Override
      String reason() {
      return "参加力扣周赛";
      }

      @Override
      String duration() {
      return "0.5";
      }
      }
    • 测试

      1
      2
      // 输出:本人老隋因参加力扣周赛需请假0.5天,望批准
      new MyLeaveRequest().request();
-------------------- 本文结束感谢您的阅读 --------------------