适配器模式

适配器模式(Adapter Pattern)

匿名 (未验证) 提交于 2019-12-02 20:37:20
适配器模式(Adapter Pattern) 是作为两个不兼容的接口之间的桥梁。 例子:读卡器是作为内存卡和笔记本之间的是适配器,内存卡插入读卡器,读卡器再插入笔记本电脑。 参考资料: http://www.runoob.com/design-pattern/adapter-pattern.html Java设计模式之《适配器模式》及应用场景 - 唯一浩哥 - 博客园 作用:将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 何时使用:1.要使用已有的一个类的方法,但是不符合我们的使用规范,且我们不知道其源码,无法copy。2。建立一个重复使用的类,用于联系一些彼此之间没有太大联系的类。3.通过接口的转换,将一个类插入到另一个类中。 如何实现 :继承或者依赖。适配器继承或者依赖已有的代码,实现目标类的接口。 注意事项 :适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。 适配器有两种模式:这两种的差别在于一个是继承源角色类,一个是获取源角色类的对象。   类适配器模式:(继承源角色)   对象适配器模式:(获取源角色对象) 差别 :1.类适配器的话,因为是继承了源角色类的关系,所以不能去处理源角色类的子类。而对象适配器则没有关系,一个适配器可以将其源类和其子类都适配到目标接口。 代码实现:类适配器模式 1 /**

适配器模式 小demo

巧了我就是萌 提交于 2019-12-02 12:44:57
适配器模式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> //适配器模式的实现 // 首先有一个老的数据渲染的方法 function getCity(){ var city = [ { id:0, name:'南山区' },{ id:1, name:'龙岗区', } ] return city; } // 渲染数据的方法 function render(fn){ console.log('开始数据的渲染'); document.write(JSON.stringify(fn())) } render(getCity); //创建一个适配新老数据的方法 function addressAdapter (oldData){ //首先拿到新数据和老数据 var address = {'福田区':2, '宝安区':3}; oldAdress = oldData(); /

设计模式——适配器

▼魔方 西西 提交于 2019-12-02 11:37:58
一、概览 二、适配器 类适配器(通过 继承 的方式调用220v的父类方法得到结果后在本类进行处理(降压)后对外提供访问方法) 对象适配器(不再继承220v的类,而是用 聚合 的方式将220v的对象通过构造函数传进去赋值,再利用赋值后的实例对象调用它类里的方法,得到结果后在本类中处理(降压)后对外提供访问) 接口适配器(适用于一个接口不想使用所有方法的情况, 要什么就写什么 方法) springMVC用到了适配器模式 来源: https://blog.csdn.net/qq_32603969/article/details/102756338

适配器模式——Adaptor Pattern

六月ゝ 毕业季﹏ 提交于 2019-12-02 08:39:36
适配器模式(Adapter Pattern): 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。根据适配器类与适配者类的关系不同, 适配器模式可分为对象适配器和类适配器两种 ,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系,在实际开发中,对象适配器的使用频率更高。 对象适配器模式 对象适配器模式 结构图中包含如下几个角色: ● Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。 ● Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系。 ● Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码。 典型的对象适配器代码如下所示: class Adapter

适配器设计模式

女生的网名这么多〃 提交于 2019-12-02 06:06:53
给一个场景: 就是Springmvc的底层是一个servlet,servlet底层是一个servlet接口,接口中有五个方法,其中只有一个sevice方法是处理请求和响应以及业务逻辑,那么怎么让其他4个方法不出现在类中? 这个时候就查找一个javaEE的api,里面有一个抽象类 GenericServlet,GenericServlet重写了其他4个方法,这个时候你再创建一个类继承GenericServlet抽象类,就直接可以重写service这一个方法就可以了,这就叫适配器模式。 来源: https://blog.csdn.net/weixin_45444336/article/details/102728056

适配器模式

折月煮酒 提交于 2019-12-01 22:28:49
适配器模式 适配器模式说的是,可以 把一个类的接口变换成客户端所期待的另一种接口 ,使得原本因接口不匹配而无法在一起工作的两个类可以一起工作。 适配器模式的用途 适配器模式的用途,在网上找了一幅图,挺形象的: 比方说我有一个台灯,其插头是标准的两相的交流电插头,即阳极、阴极。我旅游到了一个地方想用自己的台灯,但发现旅馆里面只有三相的插头,即在阳极、阴极的基础上还多了一个地级。这时候怎么办呢,一个两相到三相的转换器(适配器)就能解决这个问题了,而这正是本模式所做的事情。 类适配器 适配器模式分两种,类适配器和对象适配器。先讲类适配器,类适配器把适配的类的API转换成目标类的API,类适配器所涉及的角色有: 1、目标角色 这是所期待得到的接口 2、源角色 现在需要适配的接口 3、适配器角色 模式的核心,适配器把源接口转换成目标接口 类适配器示例 目标接口,期待得到sampleOperation1()和sampleOperation2()两个方法: public interface ClassTarget { /** 这是源类ClassAdaptee也有的方法 */ public void sampleOperation1(); /** 这是源类ClassAdaptee没有的方法 */ public void sampleOperation2(); } 源角色

dubbo spi(续)

邮差的信 提交于 2019-12-01 21:45:52
之前写了一篇关于dubbo spi的文章,现在看来后面的代码交代的不清楚,今天做一点补充。 http://my.oschina.net/zjItLife/blog/530923 dubbo的spi重要的是理解类ExtensionLoader。 这个类的头部作者就交代了这个类要做什么 Dubbo使用的扩展点获取。 自动注入关联扩展点。 自动Wrap上扩展点的Wrap类。 缺省获得的的扩展点是一个Adaptive Instance。 那么究竟是怎么做的我们不妨来看看他的变量在做什么。 dubbo变量里面有两个表示文件夹的变量 private static final String SERVICES_DIRECTORY = "META-INF/services/"; private static final String DUBBO_DIRECTORY = "META-INF/dubbo/"; private static final String DUBBO_INTERNAL_DIRECTORY = DUBBO_DIRECTORY + "internal/"; 下文涉及到这三个变量的方法在这里。 LoadFile(extensionClasses, DUBBO_INTERNAL_DIRECTORY); loadFile(extensionClasses, DUBBO_DIRECTORY

设计模式-适配器

牧云@^-^@ 提交于 2019-12-01 18:59:36
适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 模式结构 适配器模式包含如下角色: Target:目标抽象类 Adapter:适配器类 Adaptee:适配者类 Client:客户类 源码导读 我们都知道springMVC就用到了适配器模式,那他是怎么适配呢,我们来看看它的源码,首先我们要清楚springMVC的执行原理,它的整个流程我这里就不像述了,说一下关键的部分: DispatcherServlte 会根据配置文件信息注册 HandlerAdapter ,如果在配置文件中没有配置,那么 DispatcherServlte 会获取 HandlerAdapter 的默认配置,如果是读取默认配置的话, DispatcherServlte 会读取 DispatcherServlte.properties 文件,该文件中配置了三种 HandlerAdapter : HttpRequestHandlerAdapter , SimpleControllerHandlerAdapter 和 AnnotationMethodHandlerAdapter 。 DispatcherServlte 会将这三个

HandlerAdapter与适配器模式以及SpringMVC核心接口

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-01 17:35:09
HandlerAdapter,顾名思义,是Handler的适配器,为了适配各种Handler,从而可以以统一的方式获取ModelAndView。 // request => Handler public interface HandlerMapping { HandlerExecutionChain getHandler(HttpServletRequest request); } //常用: // - BeanNameUrlHandlerMapping // - RequestMappingHandlerMapping // Handler => ModelAndView public interface HandlerAdapter { boolean support(Object handler); ModelAndView handler(HttpServletRequest request, HttpServletResponse response, Object handler); long getLastModified(HttpServletRequest request, Object handler); } //常用: // - HttpRequestHandlerAdapter // - SimpleControllerHandlerAdapter // -

设计模式之--适配器模式

假装没事ソ 提交于 2019-12-01 09:52:44
原文链接: http://www.studyshare.cn/blog/details/1180/0 一、概念 适配器模式:作为两个不兼容接口之间的桥梁,可以将一个类的接口转换为我们希望的另外一个接口,使用适配器模式可以让原本由于接口不兼容而不能一起工作的那些类可以一起工作。如下图所示: java开发工具下载地址及安装教程大全,点 这里 。 更多深度技术文章,在 这里 。 二、应用场景 1、当调用双方都不太容易修改,但又为了复用现有组件,那么可以使用适配器模式进行转换。 2、在系统中接入第三方组件的时候,例如日志组件、支付组件等。可使用适配器模式。 三、案例 此处以接入一个第三方支付组件为例,详细说明适配器模式的使用方式。 假如现在需要开发一个支付功能,对外暴露一个接口,希望这个支付接口可以给其他系统提供多种支付功能(微信支付、支付宝支付、银联支付等),这是一种典型的适配器模式使用场景,第三方的支付组件(微信支付、支付宝支付、银联支付)通过适配器转换为提供出去的统一接口被调用。其他系统只需要调用暴露的统一接口即可。 代码实现: 1、支付宝、微信、银联支付组件 2、统一支付接口 3、适配器类 4、测试类 总结:在合适的场景合理使用适配器模式,上面适用场景1提出在调用双方都不方便修改的时候,例如为了适应自己的业务系统去要求支付宝修改这是不现实的