适配器模式有三个重要的成员:Target(目标接口),Adaptee(源角色),Adapter(适配器)。
Target(目标接口): 所要转换的期待的接口。(系统中正在使用的接口).
Adaptee(源角色):需要适配的接口。(想办法将其嫁接到Target中)
Adapter(适配器):将源接口适配成目标接口,通过继承,组合,实现接口等方式
适配器模式有三种实现方式:类适配器、对象适配器、接口适配器
前两者的实现方式类似,所以也可以理解为两种。
下面分别用代码来解释这三种实现方式。
类适配器: ![](https://img-blog.csdn.net/20180224154107816)
对象适配器:
接口适配器:
这三种适配器方法前两种针对场景一致,仅仅是实现手段稍有区别,二者主要用于如下场景:
(1)想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直接去访问,这时创建一个适配器就能间接去访问这个类中的方法。
(2)我们有一个类,想将其设计为可重用的类(可被多处访问),我们可以创建适配器来将这个类来适配其他没有提供合适接口的类。
以上两个场景其实就是从两个角度来描述一类问题,那就是要访问的方法不在合适的接口里,一个从接口出发(被访问),一个从访问出发(主动访问)。
接口适配器使用场景:
(1)想要使用接口中的某个或某些方法,但是接口中有太多方法,我们要使用时必须实现接口并实现其中的所有方法,可以使用抽象类来实现接口,并不对方法进行实现(仅置空),然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。这个抽象类就是适配器。