Java设计模式-适配器模式-一次性理解透

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


在这里插入图片描述

1. 适配器设计模式介绍

适配器设计模式是一种结构型模式,允许将现有类的接口用作另一个接口。它充当两个不兼容接口之间的桥梁,使它们协同工作。此模式涉及一个称为适配器的类,该类负责连接独立或不兼容接口的功能。

让我们用一个简单的例子来理解这个概念:

假设你有两个朋友,一个只会说英语,另一个只会说法语。你想让他们交流,但存在语言障碍

  • 你充当一个适配器,在他们之间翻译信息。你的角色允许英语使用者向你传达信息,而你则将这些信息转换为法语,供对方使用。
  • 这样,尽管语言不同,你的适应能够让你的朋友之间顺利交流。
  • 您扮演的角色类似于适配器设计模式,弥合不兼容接口之间的差距。

2. 适配器设计模式角色

在这里插入图片描述

2.1 目标接口(Target)

  • 描述:定义客户端期望的接口。它表示客户端代码可以使用的一组操作。
  • 作用:是客户端代码交互的通用接口。

2.2 适应者(Adaptee)

  • 描述:现有的类或系统具有不兼容的接口,需要集成到新系统中。
  • 作用:是由于接口不匹配导致客户端代码不能直接使用的类或系统。

2.3 适配器(Adapter)

  • 描述:实现目标接口的类,并在内部使用适配者的实例,使其与目标接口兼容。
  • 作用:充当桥梁的作用,使适配者的接口与目标接口相匹配。

2.4 客户端(Client)

  • 描述:使用目标接口与对象交互的代码。它不知道被适配者和适配器的具体实现细节。
  • 作用:是通过适配器将适配者集成到系统中而获得利益的代码。

3. 适配器设计模式应用场景

3.1 与现有代码的集成

当我们需要在现有代码基础上添加新的功能或组件时,通常会遇到新旧代码之间接口不兼容的情况。此时,适配器模式可以帮助我们将新组件与现有代码进行无缝集成,而无需修改已有的代码

3.2 复用现有功能

有时我们可能会有一些功能强大但接口不兼容的类库,而我们希望利用这些功能来实现自己的需求。适配器模式可以将这些现有类库包装在一个适配器中,以便我们可以轻松地在自己的项目中复用这些功能

4. 适配器设计模式代码示例

在这里插入图片描述
场景描述

以下是一个Java中使用适配器模式的简单示例。假设我们有一个电源插座类(Target),和一个特殊的电源插头类(Adaptee),我们需要创建一个适配器将这个插座类适配给插头。

4.1 目标接口:PowerOutlet

目标接口,即电源插座

// Target Interface
interface PowerOutlet {
    int getVoltage();
}

4.2 适应者:SpecialPowerOutlet

适应者类,即特殊电源插头

// Adaptee
class SpecialPowerOutlet {
    int outputSpecialVoltage() {
        // 特殊电压的生成逻辑
        return 220;
    }
}

4.3 适配器:PowerAdapter

适配器类

class PowerAdapter implements PowerOutlet {
    private SpecialPowerOutlet specialOutlet;
 
    public PowerAdapter(SpecialPowerOutlet specialOutlet) {
        this.specialOutlet = specialOutlet;
    }
 
    @Override
    public int getVoltage() {
        // 适配特殊的电压输出到标准电源插座
        int specialVoltage = specialOutlet.outputSpecialVoltage();
        // 适配逻辑
        return specialVoltage;
    }
}

4.4 客户端代码:Client

public class Main {
    public static void main(String[] args) {
        // 创建一个特殊的电源插头实例
        SpecialPowerOutlet specialOutlet = new SpecialPowerOutlet();
        // 创建一个适配器实例,将特殊插头适配到标准插座
        PowerOutlet powerOutlet = new PowerAdapter(specialOutlet);
        // 获取并打印电压
        int voltage = powerOutlet.getVoltage();
        System.out.println("电压: " + voltage + " 伏特");
    }
}

在这个例子中,PowerOutlet是目标接口,定义了标准的电源插座应有的方法。SpecialPowerOutlet是适配者类,代表了一个提供不兼容接口的现存类。PowerAdapter适配器类实现了PowerOutlet接口,并在其getVoltage方法中包含了适配适配者类电压的逻辑。客户端代码创建了适配器和适配者的实例,并展示了如何使用适配器来获取兼容的电压信息。

2. 总结

适配器模式(Adapter Pattern)是软件设计模式的一种,用于将一个类的接口转换成客户端期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙殿殿主

你的打赏是我精心创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值