适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配无法在一起工作的两个类可以在一起工作;适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。
角色
- Target:目标角色,期待得到的接口.
- Adaptee:适配者角色,被适配的接口.
- Adapter:适配器角色,将源接口转换成目标接口.
适配器模式分类
对象适配器
类图
代码示例
package com.test.adapter.objectAdapter; /** * target 目标角色,期待得到的接口. */ public interface Ps2Plug { void isPs2Plug(); }
package com.test.adapter.objectAdapter; /** * adaptee 适配者角色,被适配的接口 */ public class UsbPlug { public void isUsbPlug(){ System.out.println("usb插头"); } }
package com.test.adapter.objectAdapter; /** * adapter 适配器角色,将源接口转换成目标接口 */ public class Adapter implements Ps2Plug { private UsbPlug usbPlug = new UsbPlug(); @Override public void isPs2Plug() { usbPlug.isUsbPlug(); } }
package com.test.adapter.objectAdapter; /** * client 测试类 * 通过适配器,将ps2插头转换成usb插头 */ public class App { public static void main(String[] args) { Ps2Plug adapter = new Adapter(); adapter.isPs2Plug(); } }
类适配器
- 类图
- 代码示例
package com.test.adapter.classAdapter; /** * adapter 适配器角色,将源接口转换成目标接口 */ public class Adapter extends UsbPlug implements Ps2Plug { @Override public void isPs2Plug() { isUsbPlug(); } }