首页 > 其他分享 >spring与设计模式之四适配器模式

spring与设计模式之四适配器模式

时间:2024-01-14 18:55:08浏览次数:33  
标签:spring 适配器 模式 mother 之四 适配 设计模式 public

一、定义

适配器模式-或者称为转接口模式,变压器模式。通过适配,可以让原来提供特定功能的对象完成另外一个标准的功能。

所以,所谓的适配应该可以这样称呼:让某些类/接口适配/转换某个标准/功能。

适配器器的重点是适配,就是新增(装饰)。

为了便于记忆和理解,读者最好根据自己的习惯来命名即可,例如变压器模式。

为什么要用适配器模式?  这是因为不想大动干戈。

例如实际生活中,电厂不太可能为千家万户提供不同的电压,把电厂的电压转为需要的电压应该更加实际一些。

如果一个工厂的供电来源有多种,那么只要购买多个变压器即可,可以把不同的电源转为特定要求的电。

二、经典代码

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();
    }

}

这是经典的适配器的实现:

  1. 在适配器内部定义一个提供提供功能对象(也可以不定义)
  2. 适配器必须实现特定的接口

 

三、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,适配器,模式,mother,之四,适配,设计模式,public
From: https://www.cnblogs.com/lzfhope/p/17963927

相关文章

  • Golang流水线设计模式实践
    Golang流水线设计模式实践原创 俞凡DeepNoMind DeepNoMind 2024-01-1411:45 发表于上海 听全文流水线设计模式对于顺序处理业务数据非常有用,可以以一致的方式直观的定义对数据的处理流程。原文: UsingaPipelinePatterninGolang[1]到目前为止,我已经将Gola......
  • 【软件开发学习笔记】设计模式
    【软件开发学习笔记】设计模式设计模式设计模式是一种针对面向对象语言的软件设计方法,是对类设计的约束和指导。设计模式由“原则”和“方法”两部分组成,一个设计良好的项目结构应能完美符合“原则”中的要求,而为了实现完美往往需要按照“方法”的指导去设计。原则:这是必须......
  • Java多线程编程实战指南(设计模式篇)PDF
    随着CPU多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。而解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式书籍多采用C++作为描述语言,且书中所举的例子多与应用开发人员的......
  • spring与设计模式之三代理模式
    部分内容引用:https://blog.csdn.net/shulianghan/article/details/119798155一、定义1.1定义对于现实生活中的代理,大家非常好理解。我们需要代理,主要因为几个原因:太忙-例如房产中介、代购目前对象不是自身可以直接接触的-例如托人办事、例如掏钱购买某种服务都可以理解为代......
  • 设计模式之中介者模式
    1.定义多个对象之间通过一个中介者对象进行通信和协作,而不是直接相互交互2.口语化表述中介,这在生活中很常见,比如租房中介通常,有住房出租的房东有很多,需要租房的租客也很多,但是租客难以直接联系房东,这个时候租房中介这个职业就出现了房东将房屋登记到中介这里,租客来中介这里......
  • 【设计模式】工厂方法模式——工厂方法模式在Android SDK源码中的应用
    工厂方法模式在AndroidSDK源码中有广泛的应用,无论app层还是framework层,无论是Java实现的还是Kotlin实现的。BitmapFactoryBitmap的构造方法都没有被public修饰,开发者必须用BitmapFactory来生成Bitmap对象,BitmapFactory中用于生产Bitmap实例的工厂方法如下:publicclassBitmapFacto......
  • 【设计模式】工厂方法模式——工厂方法模式在JDK源码中的应用
    工厂方法模式在JDK源码中有很多应用场景,不仅有简单工厂模式,还有多工厂模式。Executors尽管ThreadPoolExecutor及其子类都是可以直接new出来的,但Executors还是提供了生产常用ThreadPoolExecutor实例的简单工厂:publicclassExecutors{/***Createsathreadpoolthat......
  • Python实现软件设计模式8:桥接模式 Bridge Pattern
    动机将抽象部分与实现部分分离,使他们都可以独立地变化。用抽象关联取代传统的多层继承。将类之间的静态继承关系转换为动态的对象组合关系。上图展示的软件系统中存在两个独立地变化维度,分别是抽象类(Abstraction)和实现类(Implementor),它俩都是接口、都分别可以独立地扩展出多......
  • Python实现软件设计模式7:适配器模式 Adapter Pattern
    动机有两个不存在直接继承或关联关系的类A、B,A希望能利用到B类中某个已存在的、功能完善的方法,而不再去具体实现A的接口源码;适配器模式使接口不兼容的那些类可以一起工作。主要角色目标类Target抽象接口类适配者Adaptee适配器Adapter具体实现接口客户端C......
  • 【设计模式】模板方法模式——模板方法模式在JDK源码中的应用
    模板方法模式在JDK源码里最典型的实现就是AQSAbstractQueuedSynchronizerAQS(AbstractQueuedSynchronizer)的部分代码如下:publicabstractclassAbstractQueuedSynchronizerextendsAbstractOwnableSynchronizerimplementsjava.io.Serializable{//……代码......