适配器

作者: 熊猫派 | 来源:发表于2019-01-25 16:37 被阅读0次

定义

将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

适用环境

-系统需要使用现有的类,而这些类的接口不符合系统的需要。
-想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作

模式结构

-Target:目标抽象类
-Adapter:适配器类
-Adaptee:适配者类
-Client:客户类

UML

Adapter.jpg

实例讲解

情景

背景:小成买了一个进口的电视机
冲突:进口电视机要求电压(110V)与国内插头标准输出电压(220V)不兼容
解决方案:设置一个适配器将插头输出的220V转变成110V

使用步骤

1.创建Target接口(期待得到的插头):能输出110V(将220V转换成110V)

public interface Target {
    //将220V转换输出110V(原有插头(Adaptee)没有的)
    public void Convert_110v();
}

2.创建源类(原有的插头) ;

public class PowerPort220V {
    //原有插头只能输出220V
    public void Output_220v(){
    }
}
  1. 创建适配器类(Adapter)
public class Adapter220V extends PowerPort220V implements Target{

    @Override
    public void Convert_110v() {
        this.Output_220v();
    }
}

4.定义具体使用目标类,并通过Adapter类调用所需要的方法从而实现目标(不需要通过原有插头)

        Target mAdapter220V = new Adapter220V();
        ImportedMachine mImportedMachine = new ImportedMachine();
        //用户拿着进口机器插上适配器(调用Convert_110v()方法)
        //再将适配器插上原有插头(Convert_110v()方法内部调用Output_220v()方法 
        输出220V)
        //适配器只是个外壳,对外提供110V,但本质还是220V进行供电
        mAdapter220V.Convert_110v();
        mImportedMachine.Work();

优点

-更好的复用性
系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。
-透明、简单
客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单 & 更直接
-更好的扩展性
在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
-解耦性
将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码
-符合开放-关闭原则
同一个适配器可以把适配者类和它的子类都适配到目标接口;可以为不同的目标接口实现不同的适配器,而不需要修改待适配类

缺点

过多的使用适配器,会让系统非常零乱,不易整体进行把握

参考:
https://blog.csdn.net/carson_ho/article/details/54910430

相关文章

  • 【设计模式】适配器模式

    学习文章 iOS设计模式 - 适配器 适配器模式(Adapter):类适配器、对象适配器 类图 说明 类适配器: ...

  • ListView常用知识点归纳

    适配器 适配器实现过程:共3步:新建适配器-->添加数据源到适配器-->视图加载适配器 适配器的数据源:Array...

  • iOS设计模式 (五) 适配器模式

    适配器模式 iOS中的适配器模式,主要由目标协议,适配者,适配器三部分组成. 适配器模式分类 类适配器: 适配器是...

  • 设计模式-适配器

    适配器模式,目的是为了适配补偿,对于适配器模式,我们要学习的两种方式是类适配器和对象适配器。 类适配器 类适配器是...

  • Java设计模式(二)

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

  • 适配器模式

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

  • 适配器模式

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

  • iOS 适配器模式

    适配器模式创建适配协议,创建抽象适配器类,创建类适配器/对象适配器。 应用,适用场景电源适配器,普通充电器(类适配...

  • 适配器模式

    对象适配器目标类--继承或引用<---适配器--->关联---适配者 类适配器目标类--继承或引用<---适配器-...

  • ArrayAdapter列表适配器SimpleAdapter简单

    ArrayAdapter列表适配器SimpleAdapter简单的适配器BaseAdapter基础适配器packa...

网友评论

      本文标题:适配器

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