将一个类的接口转换成客户需要的接口。Adapter模式使得原本没法直接使用的接口进行使用。 (就相当于适配器代理那个接口,然后我们可以通过适配器调用那个接口)
假设一个场景,现在有一台比较新的电脑没有了插网线的插口,然后我们需要使用一个转换器先连接网线,然后转换器再连接电脑的Usb接口,这样电脑才能上网。
①创建一个需要被适配的类(网线)
public class Adaptee {
public void request(){
System.out.println("连接网线上网");
}
}
②创建一个转换器接口并且实现它
public interface NetToUsb {
//处理请求 网线=>Usb
public void handleRequest();
}
//真正的适配器,帮你调用被适配的类
public class Adapter implements NetToUsb {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void handleRequest() {
adaptee.request();
}
}
③创建一个需要调用被适配类的类 通过适配器调用被适配的类(电脑)
public class Computer {
public void net(NetToUsb netToUsb){
//上网的具体实现,需要有一个转接头
netToUsb.handleRequest();
}
}
④测试
public class Computer {
public void net(NetToUsb netToUsb){
//上网的具体实现,需要有一个转接头
netToUsb.handleRequest();
}
public static void main(String[] args) {
Computer computer = new Computer(); //电脑
Adaptee adaptee=new Adaptee(); //网线
Adapter adapter = new Adapter(adaptee); //转换器
computer.net(adapter); //电脑连接转换器进行上网
}
}
//成功的调用被适配的类中的方法
适用场景:
1、系统需要使用一些现有的类,而这些类的接口(如方法名) 不符合系统需要,甚至没有这些类的源码。
2、想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)