生活中经常使用转接器来进行不同接口之间的转接,例如将笔记本上的接口和键盘上的接口利用适配器连接起来
那么设计模式中的适配器也可以参照于转接器
一、设计思路
这里存在着Client类(代表笔记本,需要调用usb接口) , Target类(代表usb接口) Adapter类(代表适配器) Adaptee(代表键盘)
Target接口(usb)代码:
//这是usb接口的抽象
public interface Target {
public void HandleRequest();
}
Client类(笔记本)代码:
public class Client {
//笔记本调用usb进行打字的功能
public void laptaop(Target t)
{
t.HandleRequest();
//调用usb接口
}
public static void main(String[] args) {
Client aClient=new Client();
//电脑一个
Adaptee adaptee=new Adaptee();
//键盘一个
Target target=new Adapter();//usb接口插在适配器上
aClient.laptaop(target);
//笔记本说我要打字了
}
}
Adaptee类(键盘)
//键盘类
public class Adaptee {
public void request()
{
System.out.println("键盘能打字!");
}
}
Adapter类(适配器类)
/**
* @author zhangyang
* 适配器类
*
*/
public class Adapter extends Adaptee implements Target{
@Override
public void HandleRequest() {
// TODO 自动生成的方法存根
super.request();
//因为直接继承的相关的类所以直接调用即可
}
}
//这里使用的是继承的关系,最佳的实现方式应该是组合。因为java中只能实现单继承
即
public class Adapter implements Target{
private Adaptee adaptee;//组合关系
@Override
public void HandleRequest() {
// TODO 自动生成的方法存根
adaptee.request();
//因为直接继承的相关的类所以直接调用即可
}
}
实现结果:
二、代码分析