一、问题
1、多功能充电器
2、多功能转换插头(适配器)
二、介绍
1、适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一类接口表示。主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协调工作。其别名为包装器(Wrapper)
2、适配器模式属于结构型模式
3、主要分为三类:类适配器模式、对象适配器模式、接口适配器模式
三、适配器工作原理
1、适配器模式:将一个类的接口转换成另一种接口,让原本不兼容的类可以兼容。
2、从用户角度看不到被适配者,是解决耦合。
3、用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。
4、用户收到反馈结果,感觉只是和目标接口交互。
四、适配器
1、类适配器:Adapter,通过继承src类,实现dst接口, 完成src => dst 的适配
2、注意事项:
缺点
java 类是单继承的,所以适配器需要继承src类这一点可以说是一个缺点,因为这要求dst必须是接口,有局限性。
src类的方法在Adapter中都会暴漏出来,也增加了成本。
优点
由于其继承了src类,所以可以根据需要重写src方法,使得Adapter类的灵活性增强了。
1、对象适配器模式
a:原理和类适配器模式相同,只是将Adapterl类作修改,不是继承src类,而是持有src类的实例,以解决兼容性的问题。持有src类,实现dst接口。完成src => dst 的适配。
b:根据合成复用原则、在系统中尽量使用关联关系来代替继承关系,因此大部分结构型模式都是对象结构型模式。
c:对象适配器模式是适配器模式常用的一种。
d:使用成本低、更灵活。
f:对象适配器和类适配器其实算是同一种思想,实现方式不同。根据合成复用原则,使用组合代替继承,解决了类适配必须继承src的局限性,也不在要求dst 必须是接口。
1、接口适配器模式
a:适配器或缺省适配器模式(Default Adapter Pattern)
b:当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个实现(空方法),那么该抽象类的子类可以有选择地覆盖父类的某些方法来实现需求。
c: 适用于一个接口不想使用其所有的方法情况。