详解设计模式——适配器模式

适配器模式(Adapter Class/Object)

是指将一个接口转换成客户端希望的另外一个接口,该模式使得原本不兼容的类可以一起工作。

举个例子:macbook pro有一个HDMI接口,一条HDMI接口的数据线,现在要外接显示器,而显示器只有VGI接口,我们需要一个HDMI-VGI转换器,这个转换器其实起到的作用就是适配器,让两个不兼容的接口可以一起工作。

类图:

适配器有4种角色:

  • 1.目标抽象角色(Target):定义客户所期待的使用接口。(GVI接口)
  • 2.源角色(Adaptee):需要被适配的接口。(HDMI接口)
  • 3.适配器角色(Adapter):把源接口转换成符合要求的目标接口的设备。(HDMI-VGI转换器)
  • 4.客户端(client):例子中指的VGI接口显示器。

HDMI接口转换成VGI接口,使得macbook pro可以外接显示器。

1.  //HDMI接口,需要被适配的接口

2.  publicinterfaceHDMIPort{

3.      void workByHDMI();

4.  }

1.  //VGI接口,客户端所期待的接口

2.  publicinterfaceVGIPort{

3.      void workByVGI();

4.  }

1.  //HDMI接口转换为VGI,这就是适配器

2.  publicclassHDMIToVGIimplementsVGIPort{

3.   

4.      HDMIPort hdmiPort;

5.   

6.      publicHDMIToVGI(HDMIPort hdmiPort){

7.          this.hdmiPort = hdmiPort;

8.      }

9.      //HDMI接口转换为VGI接口

10.     @Override

11.     publicvoid workByVGI(){

12.         hdmiPort.workByHDMI();

13.     }

14. }

1.   publicstaticvoid main(String[] args){

2.          //定义一个HDMI接口

3.          HDMIPort hdmiPort =newHDMIPort(){

4.              @Override

5.              publicvoid workByHDMI(){

6.                  //hdmi接口工作方式

7.              }

8.          };

9.          //HDMI接口转换为VGI接口

10.         VGIPort vgiPort =newHDMIToVGI(hdmiPort);

11.         //经过转换HDMI接口变成了VGI接口

12.         vgiPort.workByVGI();

13.          }

适配器模式优点:

  • 1.可以让任何两个没有关联的类一起运行
  • 2.提高了类的复用
  • 3.增加了类的透明度
  • 4.灵活性好。

适配器模式缺点:过多地使用适配器,会让系统非常零乱不易整体进行把握。

适用场景:

  • 1.系统需要使用现有的类,而此类的接口不符合系统的需要。
  • 2.想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。
  • 3.通过接口转换,将一个类插入另一个类系中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值