设计模式六(模板方法模式)

是一种行为型的设计模式,将一些步骤的实现延迟到子类有些步骤是固定的可以抽取父类,在父类中实现各个步骤,并且在父类中定义一个流程控制方法,将某个容易发生变化的步骤定义为抽象方法,针对不同的子类实现不同的方法,最终子类调用父类的流程控制方法即可

java 复制代码
public abstract class AbstractBank {

       //办理业务方法 -- 模板方法
       public void handle(){
               this.offerNumber();

               this.lineup();

               this.business();

               this.score();
       }

       //抽号
       public void offerNumber(){
           System.out.println("抽号");
       }
      //排队
      public void lineup(){
          System.out.println("排队");
      }
      //评分
      public void score(){
          System.out.println("评分");
      }

    //办理具体业务--抽象方法,由具体子类实现
    public abstract void business();
}
java 复制代码
public class StoreBusiness extends AbstractBank{

    //办理的具体业务
    public void business() {
        System.out.println("我要存钱");
    }
}
java 复制代码
public class TransferBusiness  extends AbstractBank{

    //转账
    public void business() {
        System.out.println("我要转账");
    }

}
java 复制代码
public class Test {


    public static void main(String[] args) {

        StoreBusiness storeBusiness = new StoreBusiness();
        storeBusiness.handle();

        System.out.println("===================================");

        TransferBusiness transferBusiness = new TransferBusiness();
        transferBusiness.handle();
    }
}

总结:模板⽅法模式将算法的不变部分被封装在模板⽅法中,⽽可变部分算法由⼦类继承实现,这样做可以很好的提⾼代 码的复⽤性,但是当算法的框架发⽣变化时,可能需要修改模板类,这也会影响到所有的⼦类

相关推荐
唐青枫44 分钟前
Java Flyway 实战指南:用 SQL 脚本管理数据库版本
java
huangdong_8 小时前
电商平台图片URL原图转换技术深度解析:从缩略图到高清原图的完整方案
java·后端·spring
記億揺晃着的那天8 小时前
Java 调用外部 Go 程序的实践:ProcessBuilder 在生产环境中的应用
java·golang·processbuilder
一只旭宝8 小时前
【C++入门精讲22】常见设计模式
c++·设计模式
JAVA面经实录9178 小时前
Java 数据结构与算法 (终极完整学习文档)
java·数据结构·算法
JAVA面经实录9179 小时前
操作系统面试题
java·服务器·数据库·计算机网络·面试
一杯奶茶¥9 小时前
基于springboot的失物招领管理系统带万字文档 校园失物招领管理系统 失物认领管理系统java springboot vue
java·vue.js·spring boot·java项目
不能只会打代码10 小时前
边缘视频分析平台的架构设计与性能优化——从750ms到190ms的调优之路
java·spring boot·redis·性能优化·边缘计算·物联网竞赛
小刘|10 小时前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
KANGBboy10 小时前
java知识五(继承)
java·开发语言