适配器模式( Adapter Pattern)把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。又称为转换器模式、变压器模式、包装(Wrapper)模式(把已有的一些类包装起来,使之能有满足需要的接口)。
模式所涉及的角色有:
目标(Target)角色:所期待得到的接口。
源(Adaptee)角色:需要适配的接口。
适配器(Adapter)角色:适配器把源接口转换成目标接口。根据这一角色的实现不同,可分为类的适配器模式(使用继承实现)和对象的适配器模式(使用委派关系实现)。
适配器模式的用意是将接口不同而功能相同或者相近的两个接口加以转换,包括适配器角色补充一些源角色没有但目标接口需要的方法。但不要误以为适配器模式就是为了补充源角色没有的方法而准备的。
类适配器模式与对象适配器模式的区别:
使用对象适配器模式可以把多种不同的源适配到同一个目标。换言之,同一个适配器可以把源类和它的子类都适配到目标接口。
使用对象适配器模式增加的新方法可以同时适用所有的源。
(对对象的适配器模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器类,而这不太实际。
与类的适配器模式相比,要想置换源类的方法不容易。
如果源中有大量的方法,使用类的适配器模式则比较容易(不需要一一写出源类中的方法,而对象的适配器模式则要一一写出目标角色中的方法,如缺省适配器)。
在什么情况下使用适配器模式:
1。系统需要使用现有的类,而此类的接口不符合系统的需要。
2。想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。
3。类或方法的作用相同但名称不同的类或方法之间进行适配(by kyo)。
与桥梁模式的区别:
桥梁模式的用意是要把实现和它的接口分开,以便它们可以独立地变化。桥梁模式并不是用来把一个已有的对象接到不相匹配的接口上的。当一个客户端只知道一个特定的接口,但是又必须与具有不同接口的类打交道时,就应该使用适配器模式。
缺省适配模式(Default Adapter Pattern)为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。
适配器模式的用意是要改变源的接口,以便与目标类的接口相容。缺省适配的用意稍有同,它是为了方便建立一个不平庸的适配器类而提供的一种平庸实现(就是为接口提供空的实现)。
在任何时候,如果不准备实现一个接口的所有方法时(一般在定义一个大的接口时都应该提供它的缺省适配类),就可以制造一个抽象类,给出所有方法的平庸的具体实现。这样,从这个抽象类再继承下去的子类就不必实现所有的方法了。缺省适配模式的中心是一个缺省适配类。这个类应当是抽象类。
在 JDK1.2 中有很多为事件处理而设计的事件监听适配器类。这些 Java 类均是为了使用的方便而提供的缺省适配器接口,它们为所对应的 Java 接口提供空的或称“平庸的(一般的)”实现。这样,Java 语言的用户程序如果需要实现一个接口中很少的几个方法时,就不必繁琐地给出它所不需要的那些方法的空的实现。
分享到:
相关推荐
设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,主要解决系统间接口不兼容的问题。适配器模式允许不同接口的类协同工作,通过创建一个适配器对象来转换不兼容的接口,使得原本由于接口不匹配而...
### Java设计模式之适配器模式详解 #### 引言 在软件开发中,我们经常遇到需要使用已有的类库,但这些类库的接口与我们的需求不匹配的情况。这时,适配器模式(Adapter Pattern)便能派上用场。适配器模式是一种...
在软件设计领域,设计模式是一种经过时间和实践验证的解决方案,用于解决常见的...这个"设计模式之适配器模式与外观模式demo"资源为学习和实践这两种模式提供了宝贵的实例,对于提升编程技能和设计思维具有积极意义。
### 深入浅出设计模式之适配器模式与外观模式 在软件工程领域,设计模式被广泛地应用于解决常见的编程问题。其中,《Head First 设计模式》是一本非常受欢迎的经典著作,它通过生动有趣的例子帮助读者理解并掌握...
标题“设计模式之适配器Adapter”暗示我们将深入探讨适配器模式的核心概念和应用场景。适配器模式通常应用于以下场景: 1. 当系统中存在一个已经存在的类,其接口不符合新需求时,可以使用适配器模式来调整接口,使...
适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不兼容的接口之间进行通信。在这个Java实现中,我们将深入探讨适配器模式的两大类型:类适配器模式和对象适配器模式,并通过具体的代码示例和...
适配器模式是软件设计模式中的一种,它的主要目的是解决接口不兼容问题,使得原本由于接口差异无法协同工作的类能够协同工作。在实际的软件开发过程中,我们常常遇到这样的情况:旧有的系统或第三方库提供了丰富的...
适配器模式是一种设计模式,它的主要目的是解决接口不兼容的问题,使得原本因接口差异而无法协同工作的类能够一起工作。适配器模式的核心思想是通过一个中间适配器类来转换不同接口,使得原有类(被适配者)能够符合...
适配器模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是使不兼容的接口之间能够进行通信。...适配器模式是Java开发者必备的设计模式之一,掌握它能帮助你更好地构建可扩展和可维护的系统。
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式被广泛应用于各种场景,如文件描述符的处理和框架的日志记录。下面我们将深入探讨适配器模式的核心概念、结构、使用场景...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在上述代码示例中,适配器模式被用来解决洗衣机(Wash)和电视机(Tv)与不同插座接口(SanXiangChaZuo 和 ErXiangChaZuo)之间的兼容性问题。...
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个接口转换为客户端期望的另一个接口。适配器模式常用于解决由于接口不兼容而无法正常工作的类之间的协作问题。 适配器模式的组成 目标接口(Target...
C++设计模式之适配器模式(Adapter) C++设计模式之适配器模式(Adapter)是指将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要应用于希望复用...