将一个类的接口转换成客户希望的另外一个接口。adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
convert the interface of a class into another interface clients expect. adapter lets classes work together that couldn’t otherwise because of incompatible interface.

由于java不支持多重继承,即一个类只能有一个父类,所以本节给出适配器模式的类图按着gof著作的分类属于对象适配器模式的类图,不是类适配器模式的类图。
对象适配器模式的结构中包括三个角色。
+ 目标(target):目标是一个接口,该接口是客户想使用的接口。
+ 被适配者(adaptee):被适配者是一个已经存在的接口或抽象类,这个接口或抽象类需要适配。
+ 适配器(adapter):适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配器的职责是对被适配者接口或是抽象类于目标接口进行适配。
如果目标(target)接口中的方法数目与配适配者(adaptee)接口的方法数目相等,那么适配器(adapter)可将被适配者接口(抽象类)与目标接口进行完全适配。
如果目标(target)接口中的方法数目少于配适配者(adaptee)接口的方法数目,那么适配器只能将被适配者接口与目标接口进行部分适配。
如果目标(target)接口中的方法数目大于配适配者(adaptee)接口的方法数目,那么适配器(adapter)可将被适配者接口(抽象类)与目标接口进行完全适配,但必须将目标多余的方法给出用户允许的默认实现。
目标(target)和被适配者(adaptee)是完全解耦的关系。
适配器模式满足“开-闭原则”。当添加一个实现adaptee接口的新类时,不必修改adapter,adapter就能对这个新类的实例进行适配。
用户需要一个类的子类的实例,但不希望与该类的子类形成耦合。
用户需要一个类的子类的实例,但用户不知道该类有哪些子类可用。
<a href="https://github.com/androidwolf">mygithub</a>