spring与设计模式之四适配器模式
一、定义
适配器模式-或者称为转接口模式,变压器模式。通过适配,可以让原来提供特定功能的对象完成另外一个标准的功能。
所以,所谓的适配应该可以这样称呼:让某些类/接口适配/转换某个标准/功能。
适配器器的重点是适配,就是新增(装饰)。
为了便于记忆和理解,读者最好根据自己的习惯来命名即可,例如变压器模式。
为什么要用适配器模式? 这是因为不想大动干戈。
例如实际生活中,电厂不太可能为千家万户提供不同的电压,把电厂的电压转为需要的电压应该更加实际一些。
如果一个工厂的供电来源有多种,那么只要购买多个变压器即可,可以把不同的电源转为特定要求的电。
二、经典代码
package study.base.designPattern.adapter; /**
* 超级女孩的中国妇女适配器。通过这个适配器,中国妇女也是超级英雄
* @author lzfto
*
*/
public class SuperWomanChineseWomenAdpater implements ISuperWoman { private ChineseWoman mother; @Override
public void learn() {
if (mother==null) {
mother=new ChineseWoman();
} mother.study();
} @Override
public void fight() {
if (mother==null) {
mother=new ChineseWoman();
}
mother.talk();
mother.work();
} }
这是经典的适配器的实现:
- 在适配器内部定义一个提供提供功能对象(也可以不定义)
- 适配器必须实现特定的接口
三、spring中HandlerAdapter有关代码
晚上文章很多,所以不再上太多的代码了,先理解下spring的分发器和适配器的关系图。
https://blog.csdn.net/zxd1435513775/article/details/103000992

以控制器方法为例子,所有的控制器都是接收特定的请求,然后返回特性信息(也可以不返回),所以所有的控制器方法具有共性的。
下图是HanlderAdpter的类层次关系图:

spring的适配器模式其实没有什么特别值得说的,
默认情况下org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport会定义多个适配器。
@Bean
public HandlerFunctionAdapter handlerFunctionAdapter() {
HandlerFunctionAdapter adapter = new HandlerFunctionAdapter(); AsyncSupportConfigurer configurer = getAsyncSupportConfigurer();
if (configurer.getTimeout() != null) {
adapter.setAsyncRequestTimeout(configurer.getTimeout());
}
return adapter;
}
@Bean
public HttpRequestHandlerAdapter httpRequestHandlerAdapter() {
return new HttpRequestHandlerAdapter();
}
spring与设计模式之四适配器模式的更多相关文章
- Java进阶篇设计模式之四 -----适配器模式和桥接模式
前言 在上一篇中我们学习了创建型模式的建造者模式和原型模式.本篇则来学习下结构型模式的适配器模式和桥接模式. 适配器模式 简介 适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型 ...
- Java设计模式之四 ----- 适配器模式和桥接模式
前言 在上一篇中我们学习了创建型模式的建造者模式和原型模式.本篇则来学习下结构型模式的适配器模式和桥接模式. 适配器模式 简介 适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型 ...
- 大型Java进阶专题(八)设计模式之适配器模式、装饰者模式和观察者模式
前言 今天开始我们专题的第八课了.本章节将介绍:三个设计模式,适配器模式.装饰者模式和观察者模式.通过学习适配器模式,可以优雅的解决代码功能的兼容问题.另外有重构需求的人群一定需要掌握装饰者模式. ...
- 每天一个设计模式-3 适配器模式(Adapteer)
每天一个设计模式-3 适配器模式(Adapteer) 1.现实中的情况 旧式电脑的硬盘是串口的,直接与硬盘连接,新硬盘是并口的,显然新硬盘不能直接连在电脑上,于是就有了转接线.好了,今天的学习主题出来 ...
- Head First 设计模式之适配器模式与外观模式
Head First设计模式之适配器模式与外观模式 前言: 之前讲过装饰者模式,将对象包装起来并赋予新的职责,这一章我们也会将对象进行包装,只不过是让它们看起来不像自己而像是别的东西.这样就可以在设计 ...
- C#设计模式(7)——适配器模式(Adapter Pattern)
一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...
- Java(Android)编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
1.组合和继承之间的选择 组合和继承都允许在新的类中放置子对象,组合是显式的这样做,而继承则是隐式的做. 组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形.即在新类中嵌入某个对象,让其实 ...
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...
- C#设计模式之七适配器模式(Adapter)【结构型】
一.引言 从今天开始我们开始讲[结构型]设计模式,[结构型]设计模式有如下几种:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.[创建型]的设计模式解决的是对象创建的问题, ...
- 8.3 GOF设计模式二: 适配器模式 Adapter
GOF设计模式二: 适配器模式 Adapter 为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式 SingleTon的三个关键点 ...
随机推荐
- Fastbin attack&&Double free和Unsortbin leak的综合使用
Fastbin attack&&Double free和Unsortbin leak的综合使用 今天做一个综合题目,包括利用Fastbin attack实现多指针指向一个地址,以及利用 ...
- 升级版header吸顶后滑动变色(二)
<van-nav-bar fixed id="opacityHeader" //拉伸状态显示的header title="赛事" ...
- gorm 动态拼接查询条件
结构体 type Mould struct { MouldId string `grom:"column:mouldID"` MouldInteriorID string `gro ...
- JS实现下拉框切换和tab标签切换
现在商城网页上会有下拉框切换内容,是如何实现的呢,研究了一天,在调整js代码和查找bug.最终完成了自己想要的效果,我没有写CSS样式,只是实现了基本功能,如果对你有所帮助,可以自己写css,使其更加 ...
- C语言:学生成绩排名----冒泡排序
题目: /* 输入10个学生成绩. 计算总分以及平均分数. 求出高于等于平均分的人数. 再按降序(由大到小)排序成绩并输出 */ 用到的冒泡算法代码模板: / ...
- PageOffice调用本地office实现多人在线同时编辑Word文档
说明:多人同时在线编辑文件大多数会出现文档相互覆盖的问题,后保存的文档会覆盖先保存的文档.pageoffice的这个功能可以用程序控制不同用户打开文件后,编辑Word文档中属于自己的区域,并且不会互相 ...
- java学习之旅(day.05)
switch多选择结构 多选择结构还有一个实现方式就是switch case switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支 switch(expression ...
- 二分法(POJ-1064与POJ-2456)
二分查找,简而言之就是在一个有序的序列中找一个元素,因为这些元素已经有序,所以每次都将要找的数跟待寻找序列的中间元素比较,如果要找的数大于中间元素,说明接下来只需要在该序列的右半边中找,所以可以不用管 ...
- 分布式任务调度内的 MySQL 分页查询优化
作者:vivo 互联网数据库团队- Qiu Xinbo 本文主要通过图示介绍了用主键进行分片查询的过程,介绍了主键分页查询存在SQL性能问题,如何去创建高效的索引去优化主键分页查询的SQL性能问题.对 ...
- 平衡树 Treap & Splay [学习笔记]
平衡树 \(\tt{Treap}\) & \(\tt{Splay}\) 壹.单旋 \(\tt{Treap}\) 首先了解 \(\tt{BST}\) 非常好用的东西,但是数据可以把它卡成一条链 ...