GOF 通过多年的项目经验的总结和提炼把通用的设计模式总结了出来, 根据模式的性质, 将其分为三种类型, 创建型, 结构型和行为型。每种类型又包含多种设计模式, 而适配器模式属于结构型中的一种。
1.什么是现实生活中的适配器?
适配器就是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等,举个简单的例子, 我们电脑的真正需要的电压应该是几十V左右, 而普通正常的交流电是220V,这时就需要一个降压的适配器来完成把正常的交流电变成我们所需的几十V , 也就是从家庭电源插口连接我们电脑电源那条线上,有很大一团的那个东西。
2.为什么需要适配器模式?
如果出现这么一种情况, 我需要通过A类来实现一个东西, 这个东西有一部分需要用到的, 刚到是市面源码B所拥有的,而且B 已经做得很成熟了, 但是B是很早就已经有的, 但并不知道,在很久以后的将来A会用到, 所以,B 没有准备A的接口, 也就是A不能直接调用B的接口。此时,我们就需要用到适配器模式。所以, 使用适配器模式,就是把一个有必要用上的, 而又不能直接用的, 转换为自己可以用的。
3.如果实现适配器模式?
它的实现有两种方式, 一种是类适配模式, 另一种是对象适配模式。
如果A类提供客户端使用的与特定领域相关的接口。
B类有已经存在接口,而这个接口不能直接用。
此时C类就是来适配B类,让B类的接口能够间接地被A类用上。
a. 类适配模式:
C类继承A类的接口, 然后继承B类的实现。
b.对象适配模式:
将B类的对象实例作为C类的组成部分, 此时,B类的能用的接口,都能被B类的对象实例所调用, 再使用B类对象的接口,来实现C类。