概述:

把一个类接口转换成另一个用户需要的接口,使原本接口不兼容的类可以一起工作

适用场景:

已经存在的类,它的方法和需求不匹配时(方法结果相同或相似) 

不是软件设计阶段考虑的设计模式,是随着软件维护,由于 不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案

优点:

能提高类的透明性和复用,现有的类复用但不需要改变

目标类和适配器类解耦,提高程序扩展性

符合开闭原则

缺点:

适配器编写过程需要全面考虑,可能会增加系统的复杂性

增加系统代码可读的难度

一般分为类适配器和对象适配器,一个通过继承,一个通过组合

 

 

类适配模式

对象适配模式

源代码:https://github.com/NoSuchClass/design_pattern/tree/master/src/structural/adapter

 

 

JDK中使用

* java.util.Arrays#asList()

* java.util.Collections#list()

* java.util.Collections#enumeration()

* javax.xml.bind.annotation.adapters.XMLAdapter