简介
适配器模式的定义非常的简单,其主要指现在具有两个类,分别为A类和B类,B类需要调用A类接口来获取一些数据,但是A类的接口提供的返回类型为C,B类需要的返回类型为D。为了在不改变两个类接口的情况下使两者兼容,我们就需要开发一个新的接口,用来将C转化为D,使得B类可以使用A类的接口。这就是适配器模式的主要作用。
案例
在实际的生活中,有些手机已经没有提供3.5mm的耳机接口,而是转用type-c接口来提供接入耳机功能,但是如果我们此时手上恰好有一个3.5mm接口的耳机并且想使用,我们就需要一个转接器。
耳机类
@Data
//耳机类
public class Headset {
//耳机接口
HeadsetInterface headsetInterface=new HeadsetInterface();
}
耳机有一个耳机接口
耳机接口类
@Data
public class HeadsetInterface {
String str="3.5mm接口";
}
耳机接口为3.5mm
手机类
@Data
public class Phone {
PhoneInterface phoneInterface=new PhoneInterface();
public void accept(PhoneInterface phoneInterface){
System.out.println("连接到耳机");
}
}
手机有一个连接耳机的函数
手机接口类
@Data
public class PhoneInterface {
String str="type-c接口";
}
手机接口为type-c接口
转换器类
public class InterfaceAdapter {
//3.5mm接口转化为type-c接口
public PhoneInterface adapter(HeadsetInterface headsetInterface)
{
//在这里进行复杂的接口类型转化,我这里就没有设计了
return new PhoneInterface();
}
}
将耳机接口转化为手机接口
测试
@Test
public void HeadsetToPhone()
{
Headset headset = new Headset();
System.out.println("我现在有一副耳机其接口为"+headset.getHeadsetInterface().getStr());
Phone phone=new Phone();
System.out.println("我现在有一个手机其接口为"+phone.getPhoneInterface().getStr());
System.out.println("使用转换器");
InterfaceAdapter interfaceAdapter=new InterfaceAdapter();
phone.accept(interfaceAdapter.adapter(headset.getHeadsetInterface()));
}
测试结果
我现在有一副耳机其接口为3.5mm接口
我现在有一个手机其接口为type-c接口
使用转换器
连接到耳机