当前位置: 首页 > news >正文

Java常见技术分享-09-模版方法模式

什么是模版方法模式?

首先 模版方法模式, 应用于 假如你需要实现多个算法, 同时这些算法的 整体流程 一样, 只是在一些环节 上有自己独特的处理, 就可以用这个模式。
通常包含两个组件, 一个是抽象父类,一个是实现抽象父类中抽象方法的子类。通常是这样工作的, 在抽象父类中 会有一个模版方法, 定义好整体流程, 流程中调用的方法 分为两部分, 一部分是通用的方法, 这类方法 在 抽象父类中会有默认实现, 一部分是 根据 具体子类特征 去实现的 抽象方法, 这样的好处是后续扩展相同流程的 算法, 只需要增加一个实现类就好了。 同时又能复用默认实现的方法。
核心思想就是 封装不变的部分, 扩展可变的部分。

SpringBoot中模版方法模式有具体的用途吗?

有的,SpringBoot中的事务管理除了加上@Transactional注解外, 还可以使用TransactionTemplate类, 这个类中的execute方法定义了完整事务管理的流程, 从开启事务, 到提交事务, 出现异常时 ,回滚事务的整体流程, 当我们实现某处代码块也想进行事务管理的时候, 就可以将我们业务逻辑放在 transactionCallback 的 doInTransaction方法里, 不用去操心事务管理的整体流程。 符合模版方法模式的核心思想, 封装不变部分 即事务的整体管理流程, 扩展可变部分 就是我们具体的业务代码。除此之外, 还有一个JDBCTemplate也挺常见的, 比如query方法里调用的execute方法 不变部分,这个方法里 封装了 获取数据库连接, 以及Statement的创建以及关闭, 异常处理这些固定操作, 而我们传入的SQL语句和RowMapper会在这个过程中被调用 ,用来执行 具体的查询 和结果映射 , 作为可变部分。

http://www.jsqmd.com/news/106761/

相关文章:

  • FreeModbus+STM32F407IGT6标准库项目代码
  • 蓝桥杯 嵌入式 客观题 [1000道]第二期 持续更新中
  • 拥抱AI,HPE Networking以“自动驾驶的网络”引领智能网络新时代
  • 2025 IT 行业就业全景:26 届及以后考生,计算机专业仍值得报考吗?
  • MongoDB Java
  • SQL必会必知整理-11-分组数据
  • AngularJS 表单
  • 2025 最新版 Kali Linux 教程:零基础小白入门到精通,工具使用全攻略一篇搞定!
  • 10个SolidWorks研发设计共享一台工作站——昆山精密机械工厂降本增效一举三得
  • 单页应用 (SPA):为什么现在的网页这么快?
  • JavaScript Window Location
  • React Native中实现鸿蒙跨平台开发使用状态管理库如`Redux`或`MobX`来管理应用状态,尤其是在处理多个组件共享状态时,使用`AsyncStorage`来存储用户数据和配置
  • SVG 多边形
  • 超适合CSDN站和B站的英语环境生成器。颠覆传统:忘掉“学”英语,开始“接触”英语!
  • 8个AI论文工具,专科生轻松搞定毕业写作!
  • 动态规划算法<1>为什么动态规划总让你头疼?看完这篇彻底入门
  • HTML 视频(Video)播放
  • WebUploader如何配合Vue2实现百万文件上传的批量处理?
  • Web 渗透测试零基础入门全攻略:核心概念梳理 + 实操步骤拆解 + 工具使用教程,一篇文章全掌握!
  • 【毕业设计】基于 SpringBoot+Vue 的校园论坛微信小程序的设计与实现基于springboot+微信小程序的校园活动管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • Harbor磁盘空间清理指南:如何安全清理半年前的镜像
  • 个人学习25.12.17 hunsec ctf-web week4
  • 彻底搞懂YOLOv1:R-CNN与YOLO架构的区别在哪里?
  • 如何用Java25编译Java17的项目
  • Cordova与OpenHarmony目标进度可视化
  • Python 爬虫实战:解析 JSON 数据接口的爬虫开发
  • 【毕业设计】基于springboot+微信小程序的应急救援小能手软件系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 树莓派运行 DeepSeek 大模型实战:轻量化模型选型与内存占用控制精要
  • Java 日期时间处理详解
  • EtherCAT分布式时钟