适配器(Adapter)模式是为解决不兼容不匹配问题而引入的。
定义:
适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类能在一起工作。
分类:
1. 组合方式——对象适配器
特点:把被适配者作为一个对象组合到适配器中,以修改目标接口包装被适配者。
2. 继承——类适配器
特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某各类而适配。
例子:插座适配器的实现
1)定义三项插座的接口
public interface ThreePlugIf { public void powerWithThree(); }
public class GBTwoPlug { public void powerWithTwo(){ System.out.println("使用二项电流供电"); } }
import offers.ThreePlugIf; /* * 二项转三项的插座适配器 */ public class TwoPlugAdapter implements ThreePlugIf { private GBTwoPlug plug; public TwoPlugAdapter(GBTwoPlug plug){ this.plug = plug; } @Override public void powerWithThree() { System.out.println("通过转换"); plug.powerWithTwo();//注意这里,三项电源的方法实现调研了二项电源 } }
public class NoteBook { private ThreePlugIf plug; public NoteBook(ThreePlugIf plug){ this.plug = plug; } public void charge(){ plug.powerWithThree(); } public static void main(String[] args) { GBTwoPlug two = new GBTwoPlug(); ThreePlugIf three = new TwoPlugAdapter(two); NoteBook nb = new NoteBook(three); nb.charge(); } }
总结:适配器模式的作用
1. 透明
通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的,这样做简单、直接、紧凑。
2. 重用
复用了现存的类,解决了现存类和复用环境不一致的问题。
3. 低耦合
将目标类和适配者解耦,适配器类重用新的适配者,无需修改代码(开闭原则)。