概述

适配器模式

将一个接口转换成为客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装类。

适配器模式有三个作用:

  • 完成旧接口到新接口的转换

  • 既有系统进行封装,逻辑上客户程序不知道既有系统的存在,将变化隔离在适配器部分

  • 如果客户程序需要迁移,仅需要在适配器部分进行更改

适配器模式主要用于以下环境

  • 我们需要服用一些已经存在的类,但这些类提供的接口不满足我们的新需要,这些旧类功能稳定,经受住考验

  • 我们封装了一些公共的类,它们经常被重用,但我们不确定目标环境需要何种接口

  • 新的接口可能需要的是之前及各类所提供的功能,而且新接口和它们不兼容

对象适配器模式的模式结构图

也可以进入这里观看
主要包含以下三个角色:

  1. Target目标抽象类

目标抽象类定义用户所需接口,可以是一个抽象类或接口,也可以是具体类

  1. Adapter适配器类

适配器可以调用另一个接口作为一个转换器,对AdapteeTarget进行适配。适配器类是适配器模式的核心,在对象适配器模式中,它可以通过继承Target并关联一个Adaptee对象使两者产生联系。

  1. Adaptee适配者类

适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,它包含了用户希望使用的业务方法,在某些情况下可能没有适配者类的源代码。

UML说明
客户端需要调用request()方法,但是Adaptee没有request()方法,但它有specificRequest()方法,这是客户端需要的,但客户端不能直接使用specificRequest(),这时候就需要一个Adapter适配器类,将Adaptee包装一下。你调用Adapter的request(),就相当于调用Adaptee.specificRequest(),典型代码如下

class Adatper extends Target{
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee){
        this.Adaptee = adaptee;
    }

    public void Request(){
        adaptee.specificRequest();
    }
}

未完成