摘要:Template定义了问题的边界,子类定义了具体的实现,只要在模板的范围内玩耍就可以了。

本文分享自华为云社区《Spring 中的Template一次全理解,解析问题的本质》,作者: 香菜聊游戏。

在学习spring的过程中,经常能看到各种Template,如果能理解了这个的核心思想是不是一下就可以全部理解所有的Template,也就是掌握事情的本质,做到一通百通,再遇到类似的不会不理解,可以直接做知识迁移,今天来一起理解下

1、设计模式之模板模式

模板模式又叫模板方法模式,是定义问题的主要框架,流程,具体的详细实现留到子类,也就是定义了事情的规则,至于每个小部分在子类中可以自定义。留下大框架,保留灵活性。

模板模式使得子类可以在不改变算法结果的情况下,重新定义某些步骤,属于行为型设计模式。

模板模式适用于以下场景:

定义流程的不变部分,将可变的行为留给子类来实现。

抽象子类的公共行为,将公共的代码留在父类,将需要分别实现的放在子类,从而避免代码重复。

举个例子:

比如unity 和 cocos 现在的脚本,引擎内置了脚本的执行流程,开发人员根据游戏的需要实现具体的游戏行为。

下面以unity 为例

unity的模板类 是MonoBehaviour ,模板类中最常用的几个方法:

  • Awake:当一个脚本被实例化时,Awake 被调用。我们大多在这个类中完成成员变量的初始化。
  • Start:仅在 Update 函数第一次被调用前调用。因为它是在 Awake 之后被调用的,我们可以把一些需要依赖 Awake 的变量放在Start里面初始化。 同时我们还大多在这个类中执行 StartCoroutine 进行一些协程的触发。要注意在用C#写脚本时,必须使用 StartCoroutine 开始一个协程,但是如果使用的是 JavaScript,则不需要这么做。
  • Update:当开始播放游戏帧时(此时,GameObject 已实例化完毕),其 Update 在 每一帧 被调用。
  • LateUpdate:LateUpdate 是在所有 Update 函数调用后被调用。
  • FixedUpdate:当 MonoBehaviour 启用时,其 FixedUpdate 在每一固定帧被调用。
  • OnDestroy:当 MonoBehaviour 将被销毁时,这个函数被调用。

2、模板模式的优缺点

优点:
利用模板模式将相同处理逻辑的代码放在抽象父类中,可以提高代码的复用性。

将不同的代码放到不同的子类中,通过对子类的扩展增加新的行为,可以提高代码的扩展性。

缺点:
每个抽象类都需要一个子类实现,导致类的数量增加。

类数量的增加间接的增加了系统复杂性。

因为继承关系自身的缺点,如果父类添加新的抽象方法,所有子类都要改一遍。

3、spring中模板

在学习Spring的过程中,发现Spring封装的几个模板,这里罗列出来,便于对比学习。

SimpleJdbcTemplate 该模板已经过时,不做赘述

JDBCTemplate JDBCTemplate是Spring对JDBC的封装,开发人员自己写SQL,需要注入dataSource。

HibernateTemplate 使用HibernateTemplate不用关心底层的数据库是哪个数据库,直接操作对象,需要注入sessionFactory

NamedParameterJdbcTemplate

也是基于JDBC的封装,不过在参数的书写上不使用?占位,而是使用:参数名的形式

5.RestTemplate是Spring提供的用于访问Rest服务的客户端

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率

6.AmqpTemplate

AmqpTemplate接口定义了发送和接收消息的所有基本操作

4、总结

Template定义了问题的边界,子类定义了具体的实现,只要在模板的范围内玩耍就可以了,就像唐僧站在孙悟空画的圈一样,在圈内保你安全,出了圈就有点危险了

点击关注,第一时间了解华为云新鲜技术~

一通百通,带你一次性全理解Spring 中的Template的更多相关文章

  1. 深入理解spring中的各种注解

    Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@ ...

  2. 深入理解spring中的各种注解(转)

    Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@ ...

  3. 通过BeanPostProcessor理解Spring中Bean的生命周期

    通过BeanPostProcessor理解Spring中Bean的生命周期及AOP原理 Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProces ...

  4. 理解Spring中的IoC和DI

    什么是IoC和DI IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度.其基本思想是:借助于"第三方" ...

  5. 如何快速理解Spring中的DI和AOP

    前言 Spring框架通过POJO最小侵入性编程.DI.AOP.模板代码手段来简化了Java 开发,简化了企业应用的开发.POJO和模板代码相对来说好理解,本篇重点解读下DI和AOP. 一 DI DI ...

  6. 深入理解Spring中bean的生命周期

    [Spring中bean的生命周期] bean的生命周期 1.以ApplocationContext上下文单例模式装配bean为例,深入探讨bean的生命周期: (1).生命周期图: (2).具体事例 ...

  7. 理解Spring中的IOC和AOP

    我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式 IOC就是典型的工厂模式,通过ses ...

  8. 理解spring中的BeanFactory和FactoryBean的区别与联系

    原文地址:http://blog.csdn.net/joenqc/article/details/66479154 首先,这俩都是个接口… 实现 BeanFactory 接口的类表明此类事一个工厂,作 ...

  9. 通过源码理解Spring中@Scheduled的实现原理并且实现调度任务动态装载

    前提 最近的新项目和数据同步相关,有定时调度的需求.之前一直有使用过Quartz.XXL-Job.Easy Scheduler等调度框架,后来越发觉得这些框架太重量级了,于是想到了Spring内置的S ...

  10. 深入理解spring中的AOP原理 —— 实现MethodInterceptor接口,自已动手写一个AOP

      1.前言 AOP是面向切面编程,即“Aspect Oriented Programming”的缩写.面对切面,就是面向我们的关注面,不能让非关注面影响到我们的关注面.而现实中非关切面又必不可少,例 ...

随机推荐

  1. KingabseES例程-事实数据与规则的匹配校验

    KingabseES例程-事实数据与规则的匹配校验 背景 使用规则,对数据进行校验,比如电商的用户购物订单,是否合法.这就需要订单的多维度,如 用户.地区.物流.支付手段.供应商 等各类信息,进行动态 ...

  2. Java Lambda 表达式常见面试问题与解答

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 在本文中,我们将讨论一些重要且常见的 Java Lambda 表达式面试问题和解答 1.什么是 Lambda 表达式? l ...

  3. 放弃"Jenkins"的种种理由,期待更好赋能研发的持续交付平台

    Jenkins 很酷,但是不完美,有历史局限性造成的问题.本文仅从"如何更好给研发团队赋能的角度",剖析Jenkins, 探讨理想的持续交付平台, 不带货无广告- 不完美的Jenk ...

  4. LabVIEW基于机器视觉的实验室设备管理系统(3)

    目录 行动计划 创建用户信息数据库 后面板连线 初始化 确认修改 确认id 判断旧密码是否正确 判断两次输入的新密码是否相同 修改用户数据库中的密码 结尾 效果演示 上一期我们完成了欢迎登录和信息查询 ...

  5. uni-app学习笔记——路由与页面跳转

    小颖最近在学习小程序,怕自己前看后忘,毕竟还没开始进入项目实践中,就自己瞎倒腾嘻嘻,今天来看下  uni-app  的路由与页面跳转,小颖就简单列举下它们的用法,具体的大家可以看官网哦!啦啦啦啦啦  ...

  6. 泛微OA与ERP集成的关键要点

    泛微OA办公系统与ERP系统的集成是为了实现企业内部各个系统之间的数据共享和协同工作,提高工作效率和管理水平.下面将详细介绍泛微OA办公系统如何与ERP系统集成以及轻易云数据集成平台在该过程中发挥的重 ...

  7. 用友U8和旺店通·企业奇门单据接口对接

    用友U8和旺店通·企业奇门单据接口对接 对接系统旺店通·企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化 ...

  8. 大数据 - MapReduce:从原理到实战的全面指南

    本文深入探讨了MapReduce的各个方面,从基础概念和工作原理到编程模型和实际应用场景,最后专注于性能优化的最佳实践. 关注[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作 ...

  9. 我用 AI 写的《JavaScript 工程师的 Python 指南》电子书发布啦!

    关于本书 你好,我是 luckrnx09,一名靠 React 恰饭的前端工程师,很高兴向你介绍我的第一本开源电子书<JavaScript 工程师的 Python 指南>. 本书的内容完全免 ...

  10. [ABC281G] Farthest City

    Problem Statement You are given positive integers $N$ and $M$. Find the number, modulo $M$, of simpl ...