适配器模式介绍
将一个类的接口转换成客户端所期望的另一种接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式是一个补偿模式,或者说是一个“补救”模式,主要功能是进行转换匹配,复用已有的功能,用来解决接口不相容的问题,而不是来实现新的接口。也就是说,客户端需要的功能应该是已经实现好了的,不需要适配器模式来实现,适配器模式主要负责把不兼容的接口转换成客户端期望的样子就可以了。但这并不是说,在适配器里面就不能实现功能。
适配器模式的角色
目标角色:Target,也就是我们期望的接口。
被适配者: Adaptee ,原有的接口,也是希望被适配但不兼容(需转换)的接口。
适配器: Adapter, 将被适配者和目标抽象类组合到一起的类。对 Adaptee 的接口与 Target 接口进行适配。
适配器模式中被适配的接口 Adaptee 和适配成为的接口 Target 是没有关联的,也就是说 Adaptee 和 Target 中的方法即可以相同,也可以不同。适配器的实现是依靠对象组合的方式。通过给适配器对象组合被适配的对象,然后当客户端调用 Target 的时候,适配器会把相应的功能委托给被适配的对象去完成。
适配器模式的3种形式
适配器模式有3种形式:类适配器、对象适配器、接口适配器
类适配器
类适配器是通过实现接口适配的,让适配器去实现 Target 的接口,然后继承 Adaptee 的实现。具体适配过程是由我们的适配器的 resuest() 方法中对 Adaptee(要适配者)的 specificRequest() 方法进行适配,使得适配器的 request() 方法返回我们需要的被适配者,供我们使用。
类适配器结构图:
代码如下: