适配器模式

结构型模式--适配器模式

心不动则不痛 提交于 2020-03-10 09:50:56
适配器模式    适配器模式(Adapter Pattern)是作为 两个不兼容的接口之间的桥梁 ,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。例如,读卡器是内存卡和电脑之间的适配器。 介绍 意图: 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要解决: 主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。 何时使用: 1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。 3、通过接口转换,将一个类插入另一个类系中。(比如老虎和飞禽,现在多了一个飞虎,在不增加实体的需求下,增加一个适配器,在里面包容一个虎对象,实现飞的接口。) 如何解决: 继承或依赖(推荐)。 关键代码: 适配器继承或依赖已有的对象,实现想要的目标接口。 应用实例: 1、美国电器 110V,中国 220V,就要有一个适配器将 110V 转化为 220V。 2、JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要使用 1.2 的 JDK

设计模式之适配器模式

前提是你 提交于 2020-03-09 00:10:44
适配器模式 概述 适配器模式是一种使用频率非常高的结构型设计模式,如果再系统中存在不兼容的接口,可以通过引入一个适配器来使原本因为接口不兼容而不能一起工作的两个类能够协调工作 将一个类的接口转换成客户希望的另一个接口,适配器模式让那些接口不兼容的类可以一起工作 适配器模式 Target(目标抽象类) 目标抽象类定义客户所需的接口,可以是一个抽象类或者接口,也可以是具体类,再适配器中,由于java语言不支持多重继承它只能是接口 Adapter(适配器类) 它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器Adapter是适配器模式的核心,在类适配器中,它通过实现Target接口并继承Adaptee类来使二者产生联系,在对象适配器中,它通过继承target并关联一个Adaptee对象使二者关联 Adaptee(适配者类) 适配者即适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下甚至没有适配者类的源代码 /** * @ClassName: CarControoler * @Description: 汽车控制类,充当目标抽象类 * @Author Crazy * @DateTime 2019年11月2日 下午8:28:28 */ public abstract class

设计模式:适配器模式

限于喜欢 提交于 2020-03-08 20:26:51
适配器模式的应用场景 兼容,装换, has-a,后置,写法-代理 适配器模式( Adapter Pattern)是指将一个类的接口转换成客户期望的另一个接口,使原本的接口不兼容的类可以一起工作,属于结构型设计模式。 适配器适用于以下几种业务场景: 1、已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。 2、适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。 重构第三登录自由适配的业务场景 适配器模式的优缺点 优点: 1、能提高类的透明性和复用,现有的类复用但不需要改变。 2、目标类和适配器类解耦,提高程序的扩展性。 3、在很多业务场景中符合开闭原则。 缺点: 1、适配器编写过程需要全面考虑,可能会增加系统的复杂性。 2、增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。 来源: https://www.cnblogs.com/LPJ-BLOG/p/12444483.html

Java设计模式之适配器模式(Adapter模式)

拜拜、爱过 提交于 2020-03-08 10:41:22
在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器。 在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。 适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 模式的结构与实现 类适配器模式可采用多重继承方式实现,如 C++ 可定义一个适配器类来同时继承当前系统的业务接口和现有组件库中已经存在的组件接口; Java 不支持多继承,但可以定义一个适配器类来实现当前系统的业务接口,同时又继承现有组件库中已经存在的组件。 对象适配器模式可釆用将现有组件库中已经实现的组件引入适配器类中,该类同时实现当前系统的业务接口。现在来介绍它们的基本结构。 1. 模式的结构 适配器模式(Adapter)包含以下主要角色。 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。 适配者

java设计模式-适配器模式

夙愿已清 提交于 2020-03-05 22:10:41
模式导读: 每个人都有自己不同的需要,每个人都有自己能够接受的不同方式,就像是为满足现在快速度发展的社会,几乎人人离不开手机的时代,我们也许会碰到在外出行手机电量不足的情况,这个时候如果你在车站,你就会发现一个专门用来手机充电的地方,而手机种类复杂多样,充电的接口也是各有千秋,所以为了适应这种情况,就有了各种各样的接头的出现,而这便是适配器模式的一种使用现实使用场景。 将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 参考类图: 类适配器 实现代码: 1.定义一个抽象USB接口 1 package com.etc; 2 //定义抽象的USB接口 3 public interface USB { 4 void use(); 5 } 2.具体的USB接口 1 package com.etc; 2 //电脑的USB接口 3 public class ComputerUSB implements USB { 4 @Override 5 public void use() { 6 System.out.println("-->电脑成功通过该USB接口进行充电!"); 7 } 8 } 1 package com.etc; 2 3 public class PhoneUSB implements USB { 4 5

Android设计模式系列--之适配器模式

大兔子大兔子 提交于 2020-03-05 21:46:43
quote frome: http://www.cnblogs.com/qianxudetianxia/archive/2012/02/27/2010965.html 对于android开发者来说起,适配器模式简直太熟悉不过,有很多应用可以说是天天在直接或者间接的用到适配器模式,比如ListView。 ListView用于显示列表数据,但是作为列表数据集合有很多形式,有Array,有Cursor,我们需要对应的适配器作为桥梁,处理相应的数据(并能形成ListView所需要的视图)。 正是因为定义了这些适配器接口和适配器类,才能使我们的数据简单灵活而又正确的显示到了adapterview的实现类上。 适配器模式,Adapter Pattern,勇敢的去适配,大量的资源可以重用。 1.意图 适配器模式,把一个类的接口变换成客户端所期待的另一种接口,从而使原本不匹配而无法在一起工作的两个,类能够在一起工作。 适配器模式分为类适配器模式和对象适配器模式。 关于类适配器模式,因为java的单继承,如果继承一个类,另外的则只能是接口,需要手动实现相应的方法。 热门词汇: 类的适配器模式 对象的适配器模式 缺省适配器模式 源类 目标接口 2.结构图和代码 为了简明直接,我省略了相关的其他适配器 ,只以此两个适配器为例。 ListViews做为client,他所需要的目标接口(target

PHP 适配器模式

北城以北 提交于 2020-03-05 08:03:32
适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。 【适配器模式中主要角色】 目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的 源(Adaptee)角色:需要进行适配的接口 适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类。 其实也就是你家墙上有一个两口的插座(Adaptee),但你买了一个电风扇(Target)需要三个口的,这个时候你就需要一个插排(Adapter)。 【类适配器模式PHP示例】 类适配器使用的是继承 /** * 目标角色 */ interface Target { /** * 源类也有的方法1 */ public function sampleMethod1(); /** * 源类没有的方法2 */ public function sampleMethod2(); } /** * 源角色 */ class Adaptee { /** * 源类含有的方法 */ public function sampleMethod1() { echo 'Adaptee sampleMethod1 <br />'; } } /** * 类适配器角色 */ class

设计模式基础-适配器模式

折月煮酒 提交于 2020-03-03 22:04:15
什么是适配器模式? 将一个类的接口转换成另一个类接口,使的两个不同的不兼容的类通过适配器也能在一起工作。 比如生活中 圆孔的二级要插入到扁孔的手机上去,那么就通过适配器来做到。 工作里用到的适配器模式 BufferedReader 不能直接连inputStrean,所以里面加一个适配器inputStreamReader,从而实现每行打印。 FileInputStream fis = new FileInputStream ( "c:/test.text" ) ; InputStreamReader isr = new InputStreamReader ( fis ) ; BufferedReader br = new BufferedReader ( isr ) ; String line = br . readLine ( ) ; while ( line != null && ! line . equals ( "" ) ) { System . out . println ( line ) ; } br . close ( ) ; slf4j适配器。 来源: CSDN 作者: kangyu0414 链接: https://blog.csdn.net/qq_35010942/article/details/104635935

设计模式之适配器模式和桥接模式

随声附和 提交于 2020-02-28 15:30:02
今日语录 找工作就像适配器一样,对于没有强烈兴趣的工作,我们只有让自己像适配器一样,磨合磨合,发觉工作中的快乐,人生才不会索然无味,但是过程是艰辛的,加油,奥利给 结构型模式 1.适配器模式 对象适配器 类适配器 缺省适配器 就是适配器是由一个抽象类实现的 2.桥接模式 定义 : 将 抽象部分 与它的 实现部分 分离 个人觉得这个 https://www.cnblogs.com/WindSun/p/10260547.html 的桥接说的还可以 注:桥接和适配器都是把两个对象组合起来配合工作,但桥接的目标是分离,适配的目标是合并 来源: CSDN 作者: a_higher 链接: https://blog.csdn.net/a_higher/article/details/104553634

Java 设计模式(2)

爱⌒轻易说出口 提交于 2020-02-28 12:45:33
我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图: 6、适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。首先,我们来看看 类的适配器模式 ,先看类图: 核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码: public class Source { public void method1() { System.out.println("this is original method!"); } } public interface Targetable { /* 与原类中的方法相同 */ public void method1(); /* 新类的方法 */ public void method2(); } public class Adapter extends Source implements Targetable { @Override