一.定义
适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
二、模式结构成员构成
• Target:目标抽象类
• Adapter:适配器类
• Adaptee:适配者类
• Client:客户类
三.代码示例
1 /** 2 * Target 3 * 目标抽象类 4 */ 5 public interface FiveVolt { 6 public int getVolt5(); 7 } 8 9 /** 10 * Adaptee 11 * 适配者类 12 */ 13 public class Volt220 { 14 public int getVolt220() { 15 return 220; 16 } 17 } 18 19 /** 20 * Adapter(1) 21 * 类适配器 22 */ 23 public class VoltClassAdapter extends Volt220 implements FiveVolt { 24 @Override 25 public int getVolt5() { 26 return 5; 27 } 28 } 29 30 /** 31 * Adapter(2) 32 * 对象适配器 33 */ 34 public class VoltObjectAdapter implements FiveVolt { 35 Volt220 volt220; 36 37 public VoltObjectAdapter(Volt220 volt220) { 38 this.volt220 = volt220; 39 } 40 41 @Override 42 public int getVolt5() { 43 return 5; 44 } 45 46 public int getVolt220() { 47 return volt220.getVolt220(); 48 } 49 }
四.优点和缺点分析
优点:
>将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。完全符合“开闭原则”。
缺点:
>增加程序实现过程的复杂度
五.应用场景
在以下情况下可以使用适配器模式:
>系统需要使用现有的类,而这些类的接口不符合系统的需要。
>想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。