一、什么是适配器
适配器是将一种接口改造成另外一种接口的一个包装类;
适配器就是将现有类按照目标标准接口的形式表现出来
思想:将已有的旧的事物用新的标准来表现出来
二、说明
两种实现方式:继承、组合
使用组合实现的时候,跟装饰者模式有点类似,不过侧重点不同,装饰者模式是给对象增加新行为,适配器是为了适配接口;
优点:符合开闭原则;适配者类和目标类解耦;代码复用;
三、角色
目标接口
适配器类
适配者类
使用者
四、Java实例
简介:现有一个USB接口和一个PSP接口实现类,功能都是进行充电,该例子的目的就是对PSP接口实现类进行包装,使之能用USB接口充电;
目标接口(标准接口),使用USB接口充电
package designpatterns.adapter; public interface IUSB { public void charge(); }
被适配类,使用psp类进行充电
package designpatterns.adapter; public class PSP { public void pspCharge(){ System.out.println("使用PSP充电"); } }
适配器类(继承方式实现)
package designpatterns.adapter; public class Adapter extends PSP implements IUSB{ @Override public void charge() { super.pspCharge(); } }
适配器类(组合方式),组合PSP对象,并实现IUSB接口
package designpatterns.adapter; public class AdapterCombination implements IUSB{ private PSP psp; public AdapterCombination(PSP psp){ this.psp = psp; } @Override public void charge() { psp.pspCharge(); } }
主类测试
package designpatterns.adapter; public class AAAdaTest { public static void main(String[] args) { //继承方式 适配器 IUSB iusb = new Adapter(); iusb.charge(); //组合方式 适配器 IUSB iusb1 = new AdapterCombination(new PSP()); iusb1.charge(); } }
打印结果:
使用PSP充电
使用PSP充电