适配器模式

原创 2013年12月03日 11:21:38

适配器模式

Adapter(别名Wrapper)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。

 

要点:

1. 适配器模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。

2. 适配器模式有对象适配器和类适配器两种形式的实现结构,但是类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。


类的适配器模式结构图(继承)


对象的适配器模式结构图(组合)

(对象适配器的代码实现)

Target:定义Client使用的与特定领域相关的接口
public interface Target {
    void request();
}

Adaptee:现在需要适配的已经存在的接口
public class Adaptee {
    public void specificRequest(){}
}

Adapter:对Adaptee 的接口与Target接口进行适配
public class Adapter implements Target{
  public Adapter(Adaptee adaptee)  {
        super();
        this.adaptee = adaptee;
    }
    public voit request(){
        adaptee.specificRequest();
    }
    private Adaptee adaptee;
}

 

适用性:

1. 系统需要使用现有的类,而此类的接口不符合系统的需要。

2. 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。

3. (对对象适配器而言)在设计里,需要改变多个已有子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器,而这不太实际。

 

效果及优缺点:

对于类适配器:

1. 用一个具体的Adapter类对Adaptee和Taget进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。

2. 使得Adapter可以override(重定义) Adaptee的部分行为,因为Adapter是Adaptee的一个子类。

对于对象适配器:

1. 允许一个Adapter与多个Adaptee,即Adaptee本身以及它的所有子类(如果有子类的话)同时工作。Adapter也可以一次给所有的Adaptee添加功能。

2. 使得override(重定义)Adaptee的行为比较困难。如果一定要override Adaptee的方法,就只好先做一个Adaptee的子类以override Adaptee的方法,然后再把这个子类当作真正的Adaptee源进行适配。

 

  • 大小: 22.8 KB
  • 大小: 24.6 KB

相关文章推荐

适配器模式Demo

  • 2017年06月05日 18:19
  • 19.46MB
  • 下载

适配器模式

  • 2012年06月26日 00:22
  • 135KB
  • 下载

一个示例让你明白适配器模式

本文讨论适配器模式。适配器模式是23中设计模式之一,它的主要作用是在新接口和老接口之间进行适配。它非常像我们出国旅行时带的电源转换器。为了举这个例子,我还特意去京东上搜了一下电源转换器,确实看到了很多...

第10章_适配器模式

  • 2012年09月27日 10:25
  • 1.31MB
  • 下载

装饰者,适配器,代理和外观模式的区别

装饰者: 封装一个对象,并提供额外的行为,用组合的方式来替代继承以扩展类的功能 适配器:封装一个对象,并提供接口的转换,主要的目的是在不修改已经存在的类的前提下,让他们可以在新的框架...
  • wind19
  • wind19
  • 2012年03月20日 14:15
  • 3973

设计模式 适配器

  • 2016年11月28日 21:03
  • 304KB
  • 下载

适配器和外观模式

  • 2016年03月10日 09:20
  • 331KB
  • 下载

Android源码之ListView的适配器模式

通过增加Adapter一层来将Item View的操作抽象起来,ListView等集合视图通过Adapter对象获得Item的个数、数据元素、Item View等,从而达到适配各种数据、各种Item视...

对象适配器模式

  • 2017年01月06日 15:17
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:适配器模式
举报原因:
原因补充:

(最多只允许输入30个字)