设计模式 -- 适配器模式

165 阅读2分钟

「这是我参与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、过多地使用适配器,会让系统非常零乱,不易整体进行把握。因此如果不是特别需要使用适配器的话,还是最好直接重构代码。毕竟没有耳机口的手机连接耳机的转接口也不便宜。