设计模式系列(十)适配器模式(Adapter Pattern)
适配器模式是将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。适配器实现了客户与具体实现的解耦,简单来说,适配器模式就是改变接口以符合客户的期望。例如:我们生活中常见的插座的适配器、无线网卡适配器、电源适配器等,这些都是用来进行不同接口的转换,更具体的来说就是我们手机充电的时候可能只需要5V的电压,而插座里面提供的交流电是220V的,那么我们通过一系列的适配器将电压转化为5V以供我们手机充电使用。
适配器模式中的角色主要有:
(1)目标角色(Target):这个角色就是客户所期望得到的,例如上例中的5V电压就是客户期望得到的目标角色;
(2)被适配角色(Adaptee):这个角色也很好理解,就是需要被适配成目标角色的角色,例如上例中的220V电压;
(3)适配器角色(Adapter):这个角色就是一个中间者,用来将被适配角色转换成目标角色,相当于是一个中间处理的环节。
适配器模式的使用前提是:接口中规定了所有要实现的方法;一个要实现此接口的具体类可能只用到了其中的几个方法,而其它的方法都是没有用的。需要注意的是,适配器模式在通常的例子中都是只适配一个类,但是这并不意味着适配器模式只能用来适配一个类,当有需求的时候,可以适配多个类,所以大家不要误以为适配器模式只能用来适配一个类。
适配器主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况,在遗留代码复用、类库迁移等方面非常有用,比如JAVA中的一些以前的接口要想在新的JDK中使用,就可以通过适配器模式来转换接口,实现兼容性。总而言之,适配器模式的使用场景主要是: