Java模板模式(template)

简介: java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式


 java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式

模板模式

模板模式介绍

 模板方法模式是编程中经常用得到的模式,它定义了一个操作中的算法核心,然后将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。

 换个说法就是某个流程的代码已经都具备了,但是其中某个节点的代码暂时不能确定,因此,我们采用模板方法模式,将这个节点的代码实现转移到子类中完成,即:处理步骤父类中定义好,具体的实现延迟到子类定义中。

代码实现

 我们通过银行办理业务,排队区号来操作来模拟模板模式。

/**
 * 父类
 * @author 波波烤鸭
 *
 */
public abstract class BankTemplateMethod {
  /**
   * 具体方法
   */
  public void takeNumber(){
    System.out.println("取号排队");
  }
  /**
   * 办理具体的业务  钩子方法:抽象方法,交给子类去实现
   */
  public abstract void transact(); 
  /**
   * 具体方法
   */
  public void evaluate(){
    System.out.println("反馈评分");
  }
  /**
   * 模板方法!!!
   */
  public final void process(){  
    this.takeNumber();
    this.transact();
    this.evaluate();
  }
}

测试类

public static void main(String[] args) {
  // 采用匿名内部类
  BankTemplateMethod btm1 = new BankTemplateMethod() {
    @Override
    public void transact() {
      System.out.println("我要存钱!");
    }
  };
  btm1.process();
  System.out.println("---------------------------");
  BankTemplateMethod btm2 = new BankTemplateMethod() {
    @Override
    public void transact() {
      System.out.println("我要理财!我这里有2000万韩币");
    }
  };
  btm2.process();
}

输出

取号排队
我要存钱!
反馈评分
---------------------------
取号排队
我要理财!我这里有2000万韩币
反馈评分

小结:银行为了方便顾客办理业务,所以制定了一套固定的业务流程。比如来了先取号排队,然后办理业务,然后评分。取号排队和评分这些功能银行可以实现,但是办理具体的业务就得具体的顾客来实现了。这就是模板模式。

开发中常见的场景

1 数据库访问的封装

2 Junit单元测试

3  servlet中的doGet和doPost方法

4 Hibernate中的模板程序

5  Spring中的JdbcTemplate,HibernateTemplate等

6   …


相关文章
|
1月前
|
运维 监控 JavaScript
SaaS模式Java全套云HIS源码包含EMR、LIS
满足基层医院各类业务需求的云HIS系统。它能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能,实现多层机构之间的融合管理。
25 0
|
1月前
|
Java
java发送微信公众号模板消息
java发送微信公众号模板消息
|
2月前
Exception in thread “main“ java.lang.NoClassDefFoundError: freemarker/template/Configuration
Exception in thread “main“ java.lang.NoClassDefFoundError: freemarker/template/Configuration
23 0
|
6天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
66 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
11天前
|
设计模式 前端开发 Java
19:Web开发模式与MVC设计模式-Java Web
19:Web开发模式与MVC设计模式-Java Web
22 4
|
16天前
|
Java 开发者 UED
Java 异步和事件驱动编程:探索响应式模式
【4月更文挑战第27天】在现代软件开发中,异步和事件驱动编程是提高应用性能和响应性的关键策略。Java 提供了多种机制来支持这些编程模式,使开发者能够构建高效、可扩展的应用程序。
29 4
|
16天前
|
设计模式 消息中间件 Java
Java 设计模式:探索发布-订阅模式的原理与应用
【4月更文挑战第27天】发布-订阅模式是一种消息传递范式,被广泛用于构建松散耦合的系统。在 Java 中,这种模式允许多个对象监听和响应感兴趣的事件。
37 2
|
17天前
|
人工智能 监控 数据可视化
Java智慧工地云平台源码带APP SaaS模式 支持私有化部署和云部署
智慧工地是指应用智能技术和互联网手段对施工现场进行管理和监控的一种工地管理模式。它利用传感器、监控摄像头、人工智能、大数据等技术,实现对施工现场的实时监测、数据分析和智能决策,以提高工地的安全性、效率和质量(技术架构:微服务+Java+Spring Cloud +UniApp +MySql)。
34 4
|
19天前
|
人工智能 监控 安全
JAVA基于SaaS模式的智慧工地云平台源码(云智慧工地解决方案)
智慧工地支持多端展示(PC端、手机端、平板端)SaaS微服务架构,项目监管端,工地管理端源码
21 0
|
19天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式