Java学设计模式之适配器模式

一、适配器模式概念

1.1 什么是适配器模式

适配器模式是一种结构型设计模式,它提供了一种将不兼容的接口转化为兼容的接口的方式,从而使原本无法一起工作的类可以协同工作。适配器模式可以分为两种:对象适配器和类适配器。

1.2 对象适配器

对象适配器通过组合的方式,将不兼容的接口适配为所需的接口。这种方式通常使用一个适配器类来组合目标接口和现有接口,并将现有接口的方法转换为目标接口的方法。

1.3 类适配器

类适配器通过继承的方式,将不兼容的接口适配为所需的接口。这种方式通常使用多重继承(在 Java 中是继承类并实现接口)来实现适配。

二、对象适配器模式代码

2.1 目标接口

public interface Target {
    void request();
}

2.2 源接口

public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee specificRequest");
    }
}

2.3 适配器

public class Adapter implements Target {

    private Adaptee adaptee;

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

    @Override
    public void request() {
        // 将目标接口的 request 方法转换为源接口的 specificRequest 方法
        adaptee.specificRequest();
    }
}

2.4 测试类

public class AdapterPatternTest {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        // 调用目标接口的方法
        target.request();
        // 输出:Adaptee specificRequest
    }
}

三、类适配器模式代码

3.1 目标接口

public interface Target {
    void request();
}

3.2 源接口

public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee specificRequest");
    }
}

3.3 适配器

public class Adapter extends Adaptee implements Target {
    @Override
    public void request() {
        super.specificRequest();
    }
}

3.4 测试类

public class AdapterPatternTest {
    public static void main(String[] args) {
        Target target = new Adapter();
        // 调用目标接口的方法
        target.request();
        // 输出:Adaptee specificRequest
    }
}

四、总结

适配器模式的优点包括:

  • 增强了系统的灵活性和可扩展性。
  • 可以让不兼容的接口之间的代码协同工作。

缺点包括:

  • 增加了代码的复杂度。
  • 可能增加维护的成本。

适配器模式适用于希望让不同接口之间的代码可以协同工作的场景,例如希望使用现有库,但其接口不兼容时。

posted @ 2024-05-09 15:09  Kllin  阅读(10)  评论(0编辑  收藏  举报