一、适用场景
如生活中键盘有USB接口的和ps/2接口的。我们手上有一个ps/2接口的键盘但笔记本电脑只有USB接口,我们只要找一个接口转换器就能让键盘在笔记本电脑上使用了。
适配器模式是将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能相互调用的类能够一起工作。
二、实现
适配器的实现需要3个构件:
- 目标接口 (Target, 即USB接口)
- 需要适配的类(Adaptee, 即源接口 ps/2)
- 适配器(Adapter, 即转换器)
我们以ps/2到USB接口适配器为例,来实现一个适配器模式的例子。
1. 先定义USB接口,指定功能
public interface USB {
public void typeWords();
}
2. 定义Adapter,去Implements USB接口
public class Adapter implements USB {
private Ps2KeyBoard keyboard;
public Adapter(Ps2KeyBoard keyboard) {
this.keyboard = keyboard;
}
@Override
public void typeWords() {
keyboard.typeWords();
}
}
3. Adapter用到了Ps2KeyBoard类,也就是真正干活的部分,要创建这个类,并在指定接口中调用Ps2KeyBoard对象的打字功能。
public class Ps2KeyBoard {
public void typeWords(){
System.out.println("ps2keyboard is typing words.");
}
}
4. Client调用这个Adapter, 在Adapter中传入Ps2KeyBoard对象用来干活,就通过Adapter实现了用Ps2键盘打字的功能。
public class Client {
public void typeWords(USB usb){
usb.typeWords();
}
public static void main(String[] args) {
Client client = new Client();
client.typeWords(new Adapter(new Ps2KeyBoard()));
}
}
调用结果