这是一个类级的设计模式。一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用逻辑在模版中被钉死了 不能改动。
这种模式主要解决:
主要解决:一些方法通用,却在每一个子类都重新写了某些方法。
应用实例:
1、在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异。
2、西游记里面菩萨定好的 81 难,这就是一个顶层的逻辑骨架。
3、spring 中对 Hibernate 的支持,将一些已经定好的方法封装起来,比如开启事务、获取 Session、关闭 Session 等,程序员不重复写那些已经规范好的代码,直接丢一个实体就可以保存。
还不能理解的话 看看下面的博客里面的烤鱼模版类。子类只需要确定加什么鱼 什么调料就行了 具体的执行顺序在模版里面固定死了。
设计模式之模板设计模式-以spring的各种template为例
在Spring里面的模版模式的应用:
REST Template:HTTP通信模版类(前端到后端)【不同HTTP框架之间的切换:idk api, HttpClient, okHttp】
JMS Template:消息处理模版类(服务之间)
JDBC Template:数据库访问的模版类(后段到数据库)【myBatis, Hiberate】
他们都封装了什么呢?封装了不同的框架 使得我们可以自由对不同框架进行切换 避免了手动改动进行切换。
spring-RestTemplate:设计模式