适配器模式

适配器模式是解决接口不兼容问题的解决方案,通过创建一个适配器对象,将不同接口的类协同工作。类适配器模式通过继承实现,对象适配器则通过委托。适配器模式适用于系统需要使用现有接口不符的类,或者创建可与多个无关类协作的统一接口。
摘要由CSDN通过智能技术生成

什么是适配器模式?

在生活中,讲汉语的和讲英语的不能相互理解,他们中间需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,同样的,在代码开发过程中两个互不兼容的接口要在一起工作,也需要一个适配器。

适配器的定义

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

在讲解适配器的结构时,我们先来看一个例子:

在这里插入图片描述
电源交流100v与电脑需要的直流12v不匹配,需要通过一个AC适配器进行电流的转换。

适配器的结构

  1. 适配器(Adapter):连接目标和源的中间对象,相当于AC转换器。
  2. 源/被适配(Adaptee):需要被适配的对象或类型,相当于电源
  3. 目标(Target):期待得到的目标,相当于电脑

适配器模式有两种:类适配器模式对象适配器模式

类适配器模式

源/被适配:—》电源

public class Electric{
    private String alternating;//交流电120V

    public Electric(){
        this.alternating= "120V";
    }

    public String printAlternating(){
        return alternating;
    }
}

目标:—》电脑

public interface Computer {
    abstract void needDirect();//需要的电压:直流电 12v
}

AC适配器

/*ElectionAdapter实现了Computer 接口意味着它继承了Computer 需要12V这个需求,
同时extends Electric也意味着它拥有了Electric的方法,
通过ElectionAdapter 适配器把Electric 和Computer 连接起来,使得它们能在一起工作*/
public class ElectionAdapter extends Electric implements Computer {
    public ElectionAdapter() {
        super();
    }
    @Override
    public void needDirect() {
        String s = super.printAlternating();
        s="12V";
        System.out.println("交流电:"+s);
    }
}

对象适配器模式,也叫做委托适配器,委托这个词太过于正式,说通俗点就是”交给其他人做事“,例如:今天早上睡过头了,没起来上课,刚好老师要进行签到,这时候你就可以委托你的好基友/好闺蜜来帮你签到,在我们这个案例中就是:源/被适配(Adaptee) 就是 Electric(电源)它将自己的某个方法委托个某个实例对象来调用

源/被适配:—》电源

public class Electric{
    private String alternating;//交流电120V

    public Electric(){
        this.alternating= "120V";
    }

    public String printAlternating(){
        return alternating;
    }
}

目标:—》电脑

public interface Computer {
    abstract void needDirect();//需要的电压:直流电 12v
}

AC适配器

public class ElectionAdapter extends Computer {
    Electric electric;//由这个对象来调用Electric类的printAlternating方法
    public ElectionAdapter( Electric electric){
        this.electric=  electric;
    }

    @Override
    public  void needDirect() {
        String s = electric.printAlternating();
        s="12v";
        System.out.println("直流电:"+s);
    }
}

看到这里,相信你一定对适配器模式有所了解了吧。那么接下来

什么时候使用适配器模式呢?

  1. 系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。
  2. 想建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
  3. 需要一个统一的输出接口,而输入端的类型不可预知。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值