一、类的适配器模式
1,UML图
目标(Target)角色:这就是所期待得到的接口。注意,由于这里讨论的是类适配器模式,因此目标不可以是类。
源(Adaptee)角色:现有需要适配的接口。
适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口中。显然,这一角色不可以是接口中,而必须是具体类。
2, 模式说明
适配器类是源的子类,因此可以在适配器类中置换掉(Override)源的一些方法;
只引进了一个适配器类,因此只有一个路线到达目标类,使问题得到简化。
3,模式示例代码
package com.maohao.struct.adapter;
public interface Target {
public void sampleOperation1();
public void sampleOperation2();
}
package com.maohao.struct.adapter;
public class Adaptee {
public void sampleOperation1(){
}
}
package com.maohao.struct.adapter;
public class Adapter extends Adaptee implements Target {
@Override
public void sampleOperation2() {
// TODO Auto-generated method stub
System.out.println("i am an adapter");
}
}
二、对象的适配器模式
1,UML图
目标(Target)角色:这就是所期待的接口,目标可以是具体的或抽象的类;
源(Adaptee)角色:现在需要适配的接口;
适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口,显然,这一角色必须是具体类。
2, 模式说明
适配器模式的用意是将接口中不同而功能相同或者相近的两个接口加以转换,这里面包括适配器角色
补充了一个源角色没有的方法,但是目标接口需要的方法。读者不要误以为适配器模式就是为补充源角色没有的方法而准备的。
对象的适配器模式效果:
(1)一个适配器可以把多种不同的源适配到同一个目标。换言之,同一个适配器可以把源类和它的子类都适配到目标接口;
(2)与类的适配器模式相比,要想置换源类的方法就不容易。如果一定要置换掉源类的一个或多个方法,就只好先做一个源类的子类,将源类的方法置换掉,然后再把源类的子类当做真正的源进行适配。
(3)虽然要想置换源类的方法不容易,但是要想增加一些新的方法则方便得很,而且新增加的方法可同时适用于所有源。
3,模式示例代码
package com.maohao.struct.adapter;
public class Adapter2 implements Target {
public Adaptee adaptee;
public Adapter2(Adaptee adaptee) {
super();
this.adaptee = adaptee;
}
@Override
public void sampleOperation2() {
// TODO Auto-generated method stub
System.out.println("i am a happy adapter");
}
@Override
public void sampleOperation1() {
// TODO Auto-generated method stub
adaptee.sampleOperation1();
}
}
4,模式说明
(1)系统需要使用现有的类,而此类的接口不符合系统的需要;
(2)想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源不一定有很复杂的接口。
(3)(对对象的适配器模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器类,而这个不太实际。
5,与其他模式比较
桥梁模式:在用意和应用上不同,桥梁模式的用意是把实现和它的接口分开,以便它们独立地变化。桥梁模式并不是用来把一个已有的对象接到不相匹配的接口上的。当一个客户端只知道一个特定的接口,但是又必须与具有不同接口的类打交道时,就应当使用适配器模式。
装饰模式:装饰类不能改它所装饰的Component对象的接口
6,模式应用
Iterator到Enumeration的适配、Enumeration到Iterator的适配、JDBC(每一个数据库引擎的JDBC驱动软件
都是一个介于JDBC接口和数据库引擎接口之间的适配器软件)
- 大小: 22.4 KB
- 大小: 26.3 KB
分享到:
相关推荐
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,主要解决系统间接口不兼容的问题。适配器模式允许不同接口的类协同工作,通过创建一个适配器对象来转换不兼容的接口,使得原本由于接口不匹配而...
适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...
适配器模式是一种结构型设计模式,它的主要作用是在不修改原有类的情况下,使两个接口不兼容的类能够协同工作。在Java中,适配器模式有两种形式:类适配器和对象适配器。类适配器模式通过继承目标接口和适配者类来...
适配器设计模式是一种结构型设计模式,用于解决接口不兼容的问题。它允许两个原本不能一起工作的对象 совместно工作。 在现实生活中,我们经常遇到适配器的使用,例如欧式插座和笔记本电脑插头的适配器、...
适配器模式是一种结构型设计模式,主要解决的是不同接口之间不兼容的问题,使得原本由于接口不匹配而无法协作的类能够协同工作。适配器模式分为类适配器和对象适配器两种形式。 在类适配器模式中,适配器类直接继承...
适配器模式是一种结构型设计模式,它允许两个不兼容的接口能够协同工作。本文将深入探讨适配器模式的原理、分类以及在Java中的实现方式。 #### 适配器模式的基本原理 适配器模式的核心在于创建一个新的类(适配器...
在软件设计领域,设计模式是一种经过时间和实践验证的解决方案,用于解决常见的...这个"设计模式之适配器模式与外观模式demo"资源为学习和实践这两种模式提供了宝贵的实例,对于提升编程技能和设计思维具有积极意义。
### 深入浅出设计模式之适配器模式与外观模式 在软件工程领域,设计模式被广泛地应用于解决常见的编程问题。其中,《Head First 设计模式》是一本非常受欢迎的经典著作,它通过生动有趣的例子帮助读者理解并掌握...
适配器模式是一种软件设计模式,它在不同的接口之间起到了桥梁的作用,使得原本由于接口不兼容而无法协作的类能够协同工作。这种模式的核心思想是将一个类的接口转换成客户希望的另一个接口,从而使原有类能适应新的...
适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...
### Java设计模式之适配器模式详解 #### 结构型模式概述 在软件工程领域,设计模式被视为一种标准解决方案,用于解决在特定上下文中经常出现的问题。设计模式按其目的和适用场景,大致可分为三种类型:创建型模式...
适配器模式是一种结构型设计模式,用于解决两个不兼容接口之间的问题,它充当了两者之间的桥梁。适配器模式可以分为三种类型:类适配器模式、对象适配器模式和接口适配器模式。 类适配器模式中,适配器类通过继承...
Java设计模式中的适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目的是将不兼容的接口转换为用户期望的接口,使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式有两种形式:类适配器...
适配器模式的结构主要包括三个角色: 1. 目标接口(Target):客户所期待的接口,适配器要提供这个接口。 2. 适配者(Adaptee):被适配的类,它的接口与目标接口不兼容。 3. 适配器(Adapter):实现了目标接口,并...
JAVA-设计模式-结构型模式-适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,其主要目的是将一个类的接口变换成客户端所期待的另一种接口。通过这种方式,原本由于接口不兼容而无法一起工作的类可以顺利合作。适配器模式有两种实现方式:...
适配器模式是一种在软件工程中广泛使用的结构型设计模式,它的主要目的是为了让不兼容的接口之间能够进行通信。在.NET开发中,适配器模式扮演着重要角色,尤其是在处理不同系统、库或组件间的集成时。这个".Net设计...
适配器模式是一种结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式常用于解决旧代码与新代码之间的兼容性问题,或者是将第三方库的API转换为更适合我们项目需求的形式。适配器模式的核心...
总之,适配器模式是iOS开发中不可或缺的设计模式之一,它帮助我们解决不同组件间的接口兼容问题,提高了代码的可复用性和可扩展性。通过理解适配器模式的工作原理和应用场景,开发者能更好地设计出灵活、可维护的iOS...
适配器设计模式是一种在软件工程中广泛应用的设计模式,它主要解决了系统中不同接口之间兼容性的问题。在软件开发过程中,经常会遇到这样的情况:我们希望使用一个已经存在的类,但其提供的接口与我们的需求不符。...