适配器模式核心思想:将A接口的对象转化成B接口的对象,使之从外观上看似是B对象,但是确实A对象在执行实际的业务逻辑。
看到适配器模式的第一感觉就是:这也算个模式?就应该这样处理啊!!!生活中有很多鲜活的例子,如网络适配器(网卡),调制解调器,数据线,充电器等等。其缺点就是,需要有这么一个额外的东西才能进行转换。
适配器模式的好处:实现了良好的可扩展性和类复用性。
下面给出一个简单的实例,将PS/2的键盘转接成USB接口。
package adapterpattern; /** * PS键盘接口 */ public interface PS2 { String A(); String B(); String C(); }
package adapterpattern; /** * USB键盘接口 */ public interface USB { String A(); String B(); String C(); }
package adapterpattern; /** * PS2键盘 */ public class PS2Keyboard implements PS2{ @Override public String A() { return "PS@A"; } @Override public String B() { return "PS@B"; } @Override public String C() { return "PS@C"; } }
package adapterpattern; /** * PS2转USB转换器 */ public class Adapter implements USB{ private PS2Keyboard keyboard; public Adapter(PS2Keyboard keyboard) { this.keyboard = keyboard; } @Override public String A() { return keyboard.A(); } @Override public String B() { return keyboard.B(); } @Override public String C() { return keyboard.C(); } }
package adapterpattern; public class Test { public static void main(String[] args) { USB usbKeyboard = new Adapter(new PS2Keyboard()); System.out.println(usbKeyboard.A()); System.out.println(usbKeyboard.B()); System.out.println(usbKeyboard.C()); } }
测试结果
PS@A PS@B PS@C
原文地址:http://blog.csdn.net/sunshoupo211/article/details/41040061