设计模式之适配器模式

#一、定义
适配器模式(Adatper):将一个类的接口转换成客户希望的另外一个接口。Adapter模式将使得原本由于接口不兼容而不能一起工作的那些类可以一起工作就像usb转接头充当适配器,把两种不兼容的接口,通过转化可以变成一起工作。

系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用的环境要求不一致的情况。

适配器有两种实现方式,一种是类适配器,一种是对象适配器,类适配器使用继承关系来实现,对象适配器使用组合关系来实现。

二、UML类图

这里写图片描述
这里我们实际请求的方法是Adaptee中的specificRequest方法,而我们能识别的是Target类中的request方法,这样我们通过构造一个Adapter类,通过在内部包含一个Adaptee对象,把原接口转换成目标接口,通过在request方法中通过目标对象调用specificRequest方法,完成接口之间的转化。

类适配器 基于继承实现

public interface ITarget {
    void f1();
    void f2();
    void f3();
}
要转化的接口定义
public class Adaptee {
    void a(){//todo }
     void b(){//todo }
     void c(){//todo }
}

public class Adapter extend Adaptee implement ITarget{
      void f1(){
      super.a();
    }
    void f2(){
    super.b();
    }
    void f3(){
     super.c();
   }

}

基于组合


public class Adapter implement ITarget{
     private Adaptee adaptee;
     public Adaper(Adaptee adaptee){
        this.adaptee=adaptee
      }
     void f1(){
      adaptee.a();
    }
    void f2(){
    
    //重新实现
    }
    void f3(){
     adaptee.c();
   }
}

#三、使用
如果使用一个已经存在的类,但如果它的接口,也就是它的方法和你要求的不同时,就可以考虑使用适配器模式。其实可以在设计初期规避这些问题,就不用使用适配器接口,只有当系统开发到一定程度不太容易修改时候再使用适配器模式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

house.zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值