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

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

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

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

相关推荐
kk哥88993 小时前
如何快速掌握JavaSE的核心语法?
java
我是一只小青蛙8883 小时前
AVL树:平衡二叉搜索树原理与C++实战
java·jvm·面试
浩瀚地学3 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
XXOOXRT4 小时前
基于SpringBoot的加法计算器
java·spring boot·后端·html5
阿崽meitoufa4 小时前
JVM虚拟机:垃圾收集器和判断对象是否存活的算法
java·jvm·算法
我是苏苏5 小时前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
一条闲鱼_mytube6 小时前
智能体设计模式(三)多智能体协作-记忆管理-学习与适应
人工智能·学习·设计模式
heartbeat..6 小时前
数据库基础知识体系:概念、约束、范式与国产产品
java·数据库·学习笔记·国产数据库
PXM的算法星球6 小时前
【操作系统】哲学家就餐问题实现详解
java