JAVA设计模式之一适配器模式
适配器模式
首先我们要了解到什么是适配器,然后我们用适配器能干嘛,生活中常见的例子。
- 适配器模式就是把两个互不关联的东西通过适配器来关联使用
- 用适配器可以节省代码重复量,后期维护便利,且符合人的逻辑思维
- 充电宝+安卓的数据线+想要充苹果手机
这里的例子是以(Computer)电脑,(Adapter)转接头,(Adaptee)网络源为例子,(NetToUsb)是符合人的逻辑思维,接口类
Computer.java
package 适配器模式;
public class Computer {
//目标程序
//电脑需要连接上转接器才可以上网,传一个转接头
public void net(NetToUsb adapter) {
//上网的方法需要一个转接头
adapter.handleRequest();
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
//电脑,适配器,网络
Computer computer=new Computer();//电脑
Adapter adapter=new Adapter();//转接适配器
Adaptee adaptee=new Adaptee();//网络
computer.net(adapter);
}
}
Adaptee .java
public class Adaptee {
//网络
public void Request() {
System.out.println("连接到网络,可以上网了!");
}
}
NetToUsb.java
package 适配器模式;
public interface NetToUsb {
//作用:处理请求让网线连接到电脑Usb
public void handleRequest();
}
Adapter.java
第一种是靠单一继承关系,有局限性,只能对应一个专属的目标网络,换了地方办公连接别人网线无法实现
package 适配器模式;
//1.继承(类适配器,单继承)
//2.组合(对象适配器:常用)
public class Adapter extends Adaptee implements NetToUsb {
//真正的适配器, 需要连接到源程序的网线和电脑的usb
@Override
public void handleRequest() {
super.Request();
}
}
Adapter2.java
第二种是传的对象,比如要的网络源,我们传一个网络对象,只要有网络类也就是有网络的地方可以传进来就能让电脑上网
package 适配器模式;
//1.继承(类适配器,单继承)
//2.组合(对象适配器:常用)
public class Adapter2 implements NetToUsb {
//真正的适配器, 需要连接到源程序的网线和电脑的usb
//传对象,就不用像继承一样只能固定网线,可以随处办公
private Adaptee adaptee;
public Adapter2(Adaptee adaptee) {
this.adaptee=adaptee;
}
@Override
public void handleRequest() {
adaptee.Request();
}
}
学设计模式的初衷:
1.能够发散且让你设计代码的时候更有逻辑
2.能够在面试中起到作用
3.能够读懂某些源码,例如Springboot里有大量适配器