适配器模式详解(Java + 实际案例)

微信公众号搜索:程序驴,查看更多学习笔记

何为适配器模式

举一个很贴切的例子,我们国家的家用交流电,电压是220V的,但是在美国,他们的家用电压为110V,因此如果我们要想在国外也能达到国内一样的充电体验,我们可能需要购买一个适配器,来将110V电压转换为220V。

这个例子中适配器的作用就是将现有的条件(110V)做出转化(适配器),使其符合我们的需要(220V)

其实适配器模式更贴近实际的用法是把多种有差别(但功能差不多)的接口做统一化的输出,这样不管是之后向更改接口还是切换服务提供者,都不会影响到接口使用方的业务逻辑。

再举个小例子,适配器模式其实就像是一个只注重结果的人,利用适配器,他不在乎你怎么提供的,他只在乎你提供给他的结果是否和之前的一样。只要结果一致,那你作为提供者可以随便捣鼓。

实战案例

在建站过程中,OSS服务是必不可少的一环,他可以作为图床,存放我们网站的图片资源,并返回图片的访问url,但是市面上有很多的OSS服务提供者,比如需要money的阿里云,腾讯云之类的,也有可以自己手搭的Minio,这些OSS服务提供的功能接口一致,但是接口的方法名,参数类型多有不同,如果在开发过程中更换服务提供者,那可就是牵一发而动全身,想象一下下面的场景:OSS服务接口一换,原本优雅的代码,突然error99+,不是方法找不到,就是参数缺一少一,实在是让人蛋疼。

bqb02

因此,我们需要一个适配器,来统一管理这些接口提供的方法,让他们最终的“结果”一致,这样不管背后的服务发生了什么变化,只要你提供的接口不变,那我的适配器就能一直工作下去。下面是代码实现。

代码实现

目录结构:

image-20240415002521669

Adapter

StorageAdapter:

image-20240415002641944

public interface StorageAdapter {
   
   

    /**
     * @Description: 创建
     */
    boolean create(String name);
    /**
     * @Description: 上传
     */
    boolean upload(String bucket,String obj, byte[] data);

//    ............
}

StorageAdapter作为统一的适配接口,它提供一些对于每个OSS服务都拥有的功能。

AliYunServiceAdapter:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值