「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战」
含义: 将一个类的接口转换成需要另外一个接口。能够使得原本不能在一起工作的类使用在一起。说白了就是把一个接口转换成另一个和接口。
我们现在的手机大多数都取消了耳机孔,当我们需要使用有线耳机的时候,并不能直接连接到手机上,而是需要一个 Type-C 转 3.5mm 的转接口我们才能连接到手机上,这个转接口就是我们所说的适配器。
1.首先我们有个耳机
public class Earphone{
public void listen(){
system.out.println("我是耳机:我需要3.5mm接口才可以听歌");
}
}
2.耳机依赖的是3.5mm的口
public interface Three{
public void provideThree();
}
3.然后连接手机的是 Type-C 的口
public class TypeC{
public void provideTypeC{
System.out.println("我是手机的TypeC接口");
}
}
4.下面我们就是连接手机和耳机的适配器
public class Transfer implements Three{
TypeC typeC;
public Transfer (TypeC typeC){
this.typeC = typeC;
}
@Override
public void provideThree()
{
//经过各种操作-->3.5mm
System.out.println("我是转接口(适配器),可以把 Type-C 接口转换成 3.5mm 接口");
}
}
5.最后我们使用耳机听歌
public class Test
{
public static void main(String[] args)
{
Earphone earphone = new Earphone();
Three three = new Transfer(new TypeC()) ;
earphone.listen(three);
}
}
输出:
我是手机的Type-C接口
我是转接口(适配器),可以把 Type-C 接口转换成 3.5mm 接口
我是耳机:我需要3.5mm接口才可以听歌
可以看出,使用一个转接口完成了把 Type-C 接口转换成 3.5mm 接口的任务,并且耳机和 Type-c 接口完全解耦。
那么我们要在什么时候使用它呢? 当系统需要使用现有的类,可是没有满足需要的接口时使用它
优点: 1、能够让任意两个没有关联的类运行在一起。 2、能够提高类的复用。 3、灵活性特别好。
缺点: 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。因此如果不是特别需要使用适配器的话,还是最好直接重构代码。毕竟没有耳机口的手机连接耳机的转接口也不便宜。