设计模式之适配器模式

系列文章目录



前言

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。

适配器的实现方式

适配器可以继承或依赖已有的对象,然后实现想要的目标接口。

示例

生活中有一个实例就是,笔记本上想要插内存卡就必须借助读卡器,读卡器就是笔记本usb接口和内部卡接口之间的适配器。将内存卡插入读卡器,再将读卡器插入笔记本,就能实现用笔记本读取内存卡了。

继承实现

usb接口

public interface UsbInterface {
    public void read();
}

内存卡类

public class MemoryCard {
    public void readCard(){
        System.out.println("读取内存卡");
    }
}

电脑类

public class Computer {

    public void readCard(UsbInterface usb){
        usb.read();
    }
}

电脑依赖使用Usb接口,想要使用内存卡,就必须要有一个适配器读卡器

读卡器适配器类

public class CardReaderAdapter extends MemoryCard implements UsbInterface{
    @Override
    public void read() {
        readCard();
    }
}

这里使用的是继承方式,继承了内存卡类

客户端类

public class Client {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.readCard(new CardReaderAdapter());
    }
}

使用继承暴露了所有被适配类的方法,增大了耦合性,建议使用有依赖聚合的方式

依赖实现

依赖实现的适配器

public class CardReaderAdapter implements UsbInterface {
    
    private MemoryCard card;
    CardReaderAdapter(MemoryCard card){
        this.card = card;
    }
    @Override
    public void read() {
        card.readCard();
    }
}

在Spring源码中的使用

在Spring源码中的转化服务GenericConversionService就使用到了适配器模式
在这里插入图片描述
在这里插入图片描述

addConverter(GenericConverter converter)方法需要依赖使用GenericConverter类,但是只有Converter对象,这时就需要一个适配器进行适配。
在这里插入图片描述
在这里插入图片描述
可以看到ConverterAdapter适配器实现了GenericConverter接口,并且聚合了Converter对象。这里就使用到了适配器模式。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值