2023年10月21日 1 分钟阅读

适配器模式(Adapter Pattern)

tinyash 0 条评论
blog15

适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期待的另一种接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它包含了两个关键角色:目标接口(Target Interface)和适配器(Adapter)。

结构

  • 目标接口(Target Interface): 定义客户端期待的接口。
public interface Target {
    void request();
}
  • 适配者类(Adaptee): 定义了一个已经存在的接口,但它的接口与客户端期望的接口不一致。
public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee's specific request.");
    }
}
  • 适配器类(Adapter): 实现了目标接口,同时持有适配者类的实例,在目标接口方法中调用适配者类的方法。
public class Adapter implements Target {
    private Adaptee adaptee;

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

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

优点和缺点

优点:

  1. 解耦合: 适配器模式使得客户端和适配者类解耦合,客户端不需要知道适配者类的具体接口。
  2. 复用性: 适配器模式可以重用已有的适配者类,而不需要修改其源代码。
  3. 灵活性: 适配器模式可以在不改变适配者类和目标接口的前提下,灵活地实现接口的匹配。

缺点:

  1. 过多的适配器类: 如果系统中有大量的适配器类,可能会使得系统变得复杂。

示例

以下是一个适配器模式的示例,将一个现有的Adaptee适配到Target接口:

// 目标接口
public interface Target {
    void request();
}

// 适配者类
public class Adaptee {
    public void specificRequest() {
        System.out.println("Adaptee's specific request.");
    }
}

// 适配器类
public class Adapter implements Target {
    private Adaptee adaptee;

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

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

// 客户端代码
public class Main {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        target.request();
    }
}

在这个例子中,Adapter 实现了 Target 接口,同时持有一个 Adaptee 的实例。当客户端调用 request 方法时,实际上会调用 Adaptee 的 specificRequest 方法。这样,适配器模式允许客户端使用 Target 接口,同时又能够调用 Adaptee 的方法。

精选推荐 RECOMMEND
阿里云
前往领券

☁️ 阿里云新客专享

🎁 新用户 8 折优惠,云服务器、建站套餐都能省一笔

新用户专享,个人建站从这里开始

腾讯云
点击查看

🚀 腾讯云活动专区

💻 4核4G服务器新客 38元/年起,香港地域低至 6.5 折/月

活动价格以官网为准

🙋 AI焕新季,马上用千问

🧩 AI 大模型入门套餐首购低至 4.5 折

领1728元礼包

阿里云
领养龙虾

🦞 OpenClaw

⚡ 分钟级部署 OpenClaw,低至 68 元 1 年,专属你的 AI 管家

自动帮你干活,适合个人和团队

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。

工具站推荐 TINYASH TOOL HUB

效率工具,一站直达

常用工具都在这里,打开即用 www.tinyash.com/tool

Markdown 图片处理 开发调试 效率工具