AVA设计模式之一适配器模式 适配器模式 首先我们要了解到什么是适配器,然后我们用适配器能干嘛,生活中常见的例子。 适配器模式就是把两个互不关联的东西通过适配器来关联使用 用适配器可以节省代码重复量,后期维护便利,且符合人的逻辑思维 充电宝+安卓的数据线+想要充苹果手机 这里的例子是以(Computer)电脑,(Adapter)转接头,(Adaptee)网络源为例子,(NetToUsb)是符合人的逻辑思维,接口类Computer.java [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 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); } } NetToUsb.java [Java] 纯文本查看 复制代码 ? 1 2 3 4 5 package 适配器模式; public interface NetToUsb { //作用:处理请求让网线连接到电脑Usb public void handleRequest(); } Adapter.java第一种是靠单一继承关系,有局限性,只能对应一个专属的目标网络,换了地方办公连接别人网线无法实现 [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 package 适配器模式; //1.继承(类适配器,单继承) //2.组合(对象适配器:常用) public class Adapter extends Adaptee implements NetToUsb { //真正的适配器, 需要连接到源程序的网线和电脑的usb @Override public void handleRequest() { super .Request(); } } Adapter2.java第二种是传的对象,比如要的网络源,我们传一个网络对象,只要有网络类也就是有网络的地方可以传进来就能让电脑上网 [HTML] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 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里有大量适配器