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

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

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();
    }
}

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

相关推荐
white-persist15 分钟前
汇编代码详细解释:汇编语言如何转化为对应的C语言,怎么转化为对应的C代码?
java·c语言·前端·网络·汇编·安全·网络安全
程序员阿达29 分钟前
开题报告之基于SpringBoot框架的图书借阅系统的设计与实现
java·spring boot·后端
Eoch7731 分钟前
吃透 Java 核心技术:JVM 调优、并发安全、微服务开发,解决 90% 企业级场景问题
java·后端
_院长大人_38 分钟前
设计模式-代理模式
设计模式·代理模式
yaoxin5211231 小时前
229. Java 集合 - 操作集合中的多个元素(批量操作)
java·开发语言·python
C++chaofan1 小时前
MyBatis - Plus学习笔记
java·spring boot·笔记·后端·mysql·架构·mybatis
HSJ01701 小时前
Aviator中使用BigDecimal进行高精度计算
java·开发语言·bigdecimal·aviator
weixin_307779131 小时前
利用 AWS Lambda 与 EventBridge 优化低频 Java 作业的云计算成本
java·开发语言·云原生·云计算·aws
guangzan1 小时前
TypeScript 中的单例模式
设计模式
一缕南风1 小时前
Spring Boot 响应拦截器(Jackson)实现时间戳自动添加
java·spring boot·后端·拦截器