Java设计模式之适配器模式的实现
作者:啊几
这篇文章主要介绍了Java设计模式之适配器模式的实现,适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能,需要的朋友可以参考下
前言
适配器模式(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对象。这里就使用到了适配器模式。
到此这篇关于Java设计模式之适配器模式的实现的文章就介绍到这了,更多相关Java适配器模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!