概述:
把一个类接口转换成另一个用户需要的接口,使原本接口不兼容的类可以一起工作
适用场景:
已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)
不是软件设计阶段考虑的设计模式,是随着软件维护,由于 不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案
优点:
能提高类的透明性和复用,现有的类复用但不需要改变
目标类和适配器类解耦,提高程序扩展性
符合开闭原则
缺点:
适配器编写过程需要全面考虑,可能会增加系统的复杂性
增加系统代码可读的难度
一般分为类适配器和对象适配器,一个通过继承,一个通过组合
类适配模式
对象适配模式
源代码: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