适配器模式

作者: OneXzgj | 来源:发表于2019-07-21 17:11 被阅读1次

一、定义:

适配器模式是把一个类的接口变化成客户端所期待的另一种接口,从而使原本因接口不匹配的而无法在一起工作的两个类能够在一起进行工作

二、使用场景:

1.系统想用现有的类,而此类的接口不符合所期待的系统的需要,即不兼容
2.想建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类
3.需要统一输出的接口,但是输入类型不可预知情况

三、适配器模式分类:

3.1类适配器

image.png

Adapter 继承自Adaptee,从而实现适配和转化

Target : 目标角色,也就是所期待得到的接口
Adapter:适配角色,将不兼容的方法,适配目标角色需要的接口或者方法
Adaptee: 需要适配和转换的角色

简单示例

日常生活中电压为220V,但是手机充电电压为5V,这时候,就需要一个手机电源适配器,将220V的电压转为手机能用的5V电压,如下所示:

/**
 * des:adaptee角色,需要被装换的对象
 * author:onexzgj
 * time:2019/5/27
 */
public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
/**
 * Target对象,5V
 */
public interface FiveVolt {
    int getVolt5();
}
/**
 * des:Adapter对象
 * author:onexzgj
 * time:2019/5/27
 */
public class VoltAdapter extends Volt220 implements FiveVolt{
    @Override
    public int getVolt5() {
        return getVolt220()/44;
    }
}
public class Test {

    public static void main(String[] args){

        VoltAdapter adapter=new VoltAdapter();

        System.out.println("转化后的电压为 : " + adapter.getVolt5());
        //转化后的电压为 : 5
    }
}

3.2对象适配器

image.png

Adapter依赖Adaptee对象,即持有Adaptee的对象,从而实现适配和转化

Target : 目标角色,也就是所期待得到的接口
Adapter:适配角色,将不兼容的方法,适配目标角色需要的接口或者方法
Adaptee: 需要适配和转换的角色

简单示例

/**
 * Target对象,5V
 */
public interface FiveVolt {
    int getVolt5();
}

/**
 * des:adaptee角色,需要被装换的对象
 * author:onexzgj
 * time:2019/5/27
 */
public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
/**
 * des:适配器
 * author:onexzgj
 * time:2019/5/27
 */
public class VoltAdapter implements FiveVolt{

    private Volt220 mVolt220;

    public VoltAdapter(Volt220 volt220){
        this.mVolt220=volt220;
    }

    @Override
    public int getVolt5() {

        if (mVolt220!=null)
           return mVolt220.getVolt220()/44;
        return 220;
    }
}
public class Test {

    public static void main(String[] args){
        int volt5 = new VoltAdapter(new Volt220()).getVolt5();
        System.out.println(volt5);
    }
}

Target : 目标角色,也就是所期待得到的接口
Adapter:适配角色,将不兼容的方法,适配目标角色需要的接口或者方法
Adaptee: 需要适配和转换的角色

四、两种适配的比较

对象适配器是将要适配的对象直接传递到Adapter中,使用组合的方式实现接口的兼容,比类适配器灵活,另外一个好处是被适配对象中的方法不会暴露出来,用户学习成本较低,而类适配器继承被适配对象,则会暴露出被适配对象的方法。

五、适配器设计模式优点

更好的复用性,将现有类,通过适配器设计模式就可以让现有类功能更好的复用。
更好的扩展性,在原有类的基础上,增加了自己适配的方法,从而扩展了系统功能。

相关文章

  • Java设计模式(二)

    talk is cheap show me the code 适配器模式 类适配器模式 接口适配器模式 对象适配器...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

  • 设计模式之适配器模式

    适配器模式: 类适配器模式、对象适配器模式、接口适配器模式 1.类适配器模式:新的接口出现了,但是和老的接口不兼容...

  • 学习iOS设计模式第一章 适配器(Adapter)

    今天学习了iOS设计模式中的适配器模式,适配器有两种模式对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包...

  • 第4章 结构型模式-适配器模式

    一、适配器模式简介 二、适配器模式的优点 三、适配器模式的实例

  • 设计模式(Design Patterns)适配器模式(Adapt

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类的适配器模式 场景:将一个类转换成...

  • 适配器模式

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式将某个类的接口转换成客户端期...

  • 适配器模式

    先直观感受下什么叫适配器 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 对象适配器模...

  • 适配器模式

    适配器模式 一、适配器模式定义 适配器模式的定义是,Convert the interface of a clas...

  • 设计模式:结构型

    享元模式 (Pools,Message) 代理模式 适配器模式 :类适配器和对象适配器 装饰者模式 外观模式 桥接...

网友评论

    本文标题:适配器模式

    本文链接:https://www.haomeiwen.com/subject/rwphtctx.html