适配器模式主要是用于接口不兼容但是有不至于系统重构,这个时候就可以通过适配器来使接口兼容。项目中也会经常用到,面试偶尔会问到。
一、适配器模式的定义:
适配器模式是将一个类的接口转换成成客户期望的另一个接口,适配器让原来的接口不兼容的类可以合作无间。现实中我们也经常用到各种适配器(也就是转换器,电压转换器,买港版苹果的需要一个插头转换器,等等)
二、适配器模式涉及的角色:
为了便于理解,整个适配器模式就用安卓转苹果充电插头的例子加深一下理解。
1.客户(苹果手机)
客户是一句目标接口实现的。(苹果手机的充电槽肯定默认是苹果线,也就是根据苹果线实现的)
2.被适配者(安卓充电线)
被适配者就是一个接口,并且跟客户不兼容的(安卓充电线,默认就是充安卓设备的电,跟苹果不兼容)
3.适配器(安卓转苹果线)
适配器实现了目标接口,并且有被适配者的实例。图片应该更好理解
三、适配器模式整个过程
1.客户通过目标接口调用适配器的方法对适配器发出请求(苹果手机插上适配器,对适配器说:“老子要充电!”)
2.适配器使用被适配者接口把请求转换成被适配者的一个或多个接口的调用(适配器用安卓口向安卓充电线发出充电请求调用)
3.客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。(苹果只管充电,它不会知道是什么充电器给他冲的点,只知道电视从苹果头那个地方来的)
四、适配器实现(类适配器模式)原理:通过继承来实现适配器功能
1.需要一个目标接口(一个苹果的插头接口)(苹果插头应该张成什么样子)
2.需要一个目标接口的实现(苹果插头的实际产品,需要实现功能)
3.需要一个被适配者的接口(安卓插头的接口)
4.需要一个被适配者的实现(安卓插头的实现)
5.需要一个适配器(最最重要的一个器件,如上面的真实图例)
6.适配器使用
四、适配器实现(对象适配器模式)原理:通过组合来实现适配器功能。
使用方式:
关于类适配器与对象适配器的选择:
类适配器是用继承的方式,而对象适配器使用的是组合的方式,组合优于继承,推荐使用对象继承器
关于适配器模式的优缺点:
优点:
更好的复用性,更好的扩展性
缺点:
用的太多的话,代码混乱,不易于管理