适配器模式是一种设计模式,它允许将一个类的接口转换成客户期望的另一个接口。适配器模式使原本接口不兼容的类可以一起工作。

何时使用适配器模式?

  1. 当你想要使用一个已经存在的类,而这个类的方法签名与当前系统的接口不兼容时。
  2. 当你想要创建一个可重用的类,该类可以与其他不相关的或者不可预见的类或模块协同工作。
  3. 当你想要一个已经存在的类可以与其他不相关的类或模块协同工作,而这些类或模块之间不存在任何依赖关系。

适配器模式的组成

  • 目标接口(Target):定义客户所期待的接口。
  • 源类(Adaptee):包含你想要使用的类的方法。
  • 适配器(Adapter):实现目标接口,并包含对源类的引用。

适配器模式示例

假设我们有一个旧式的手机充电器(Adaptee),它只能插入特定的电源插座。现在我们想要使用一个新式的手机充电器(Target),它需要插入一个不同的电源插座。我们可以通过创建一个适配器(Adapter)来实现这一点。

// 目标接口
interface Charger {
    void charge();
}

// 源类
class OldCharger implements Charger {
    public void charge() {
        System.out.println("Insert old charger into the power outlet.");
    }
}

// 适配器
class Adapter implements Charger {
    private OldCharger oldCharger;

    public Adapter(OldCharger oldCharger) {
        this.oldCharger = oldCharger;
    }

    public void charge() {
        System.out.println("Insert new charger into the power outlet.");
        oldCharger.charge();
    }
}

// 客户端代码
public class AdapterPatternDemo {
    public static void main(String[] args) {
        OldCharger oldCharger = new OldCharger();
        Adapter adapter = new Adapter(oldCharger);

        Charger newCharger = adapter;
        newCharger.charge();
    }
}

更多关于设计模式的介绍,请访问设计模式教程

Adapter_Pattern