适配器模式
将对象包装起来,并将其接口转化为想要的接口,以符合客户的期望。(与装饰者比较,后者将对象包装起来,赋予对象新的职责)
客户和被适配者是解耦的,因为客户不知道被适配者的细节。
对象适配器和类适配器
对象适配器组合被适配者,被适配者及其子类都可以适配,弹性更强。类适配器通过多重继承目标接口和被适配者,java无法使用,且弹性不足。
枚举类和迭代类
Enumeration类枚举器和Iterator类迭代器适配。比如被调用的代码使用旧的版本Enumeration实现的,可是新的代码想用Iterator方法,那么就要加一个适配器咯,与时俱进。这样随着版本更迭,Enumeration才会慢慢退出代码舞台,达到平稳过渡的目的。
总结
适配器,就是在客户代码调用服务代码时,虽然功能相符,但是接口却有差异,无法兼容,此时适配器,就是达到兼容的目的。
变化的是服务代码,比如厂商的改变(JDBC接口,各个厂商只要在自己驱动的基础上实现JDBC的适配器,就可以由java调用!),这样客户代码就不用改变,且能达到兼容的目的。