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