适配器模式核心思想:将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