适配器模式是将一个类的接口,转换成客户期望的另一个接口,使得原来因为接口不兼容的类能够在一起工作。
它由下面四个组件构成:
-
客户端Client
-
目标接口Target
-
被适配者Adaptee
-
适配器Adapter
通常情况下,将被适配者的类作为对象组合在适配器Adapter类中,同时,适配器Adapter类实现了目标接口Target,完成修改目标接口,包装被适配者。
适配器分类:
对象适配器:
采用组合方式的适配器称为对象适配器。把被适配者作为一个对象组合到适配器类中,以修改目标接口包装被适配者。
类适配器:
采用继承方式的适配器称为类适配器。通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类实现适配。代码可重用性低。
当然,适配器模式也有变体,例如下面的例子:
用一个抽象的适配器类来实现目标类的接口,具体的适配器继承了该抽象适配器。有两个具体的类impl1和impl2实现了被适配者的接口。这样具体的适配器就能适配者两个类了。
适配器的作用
透明
通过适配器,客户端可以调用同一接口,因而对客户端是透明的,这样更加的简单透明,直接。
代码重用
复用的现存的类,解决了现存类与复用环境要求不一致的问题。
低耦合
将目标类与被适配者类解耦,通过引入一个适配器类重用现存的一个被适配者类,无需修改原来的代码。