定义

将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。

比如笔记本的电源(也叫电源适配器)就使用了适配器模式。将220V的交流电转换为笔记本电脑所需要的12V

适配器模式角色

适配器模式包含以下三个角色:

  • Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。

  • Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对 Adaptee 和 Target 进行适配。它是适配器模式的核心。

  • Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。

适用场景

  • 系统需要使用现有的类,但现有的类却不兼容。

  • 需要建立一个可以重复使用的类,用于一些彼此关系不大的类,并易于扩展,以便于面对将来会出现的类。

  • 需要一个统一的输出接口,但是输入类型却不可预知。

实例

以电源适配器为例

/**
 * 220V 电压对象
 */
public class AC220 {

    public int output220V(){
        return 220;
    }
}
/**
 * 5V 电压输出接口
 */
public interface DC5 {
    int output5V();
}

适配器对象

public class PowerAdapter implements DC5 {

    private AC220 ac220;

    public PowerAdapter(AC220 ac220) {
        this.ac220 = ac220;
    }

    @Override
    public int output5V() {
        if (this.ac220 != null) {
            return (ac220.output220V() / 44);
        }
        return 0;
    }
}

调用:

public static void main(String[] args) {
    PowerAdapter powerAdapter = new PowerAdapter(new AC220());
    System.out.println(powerAdapter.output5V());
}

控制台输出:

5
02-11 22:44