美文网首页设计模式
设计模式--适配器模式

设计模式--适配器模式

作者: 二妹是只猫 | 来源:发表于2019-03-21 15:40 被阅读0次

模式介绍

  • 对于从事android开发的开发人员对这个模式极其熟悉,从最早的ListView、GridView到现在的RecycleView都需要使用Adapter。适配器是将两个不兼容的类融合在一起,它优点像粘合剂,将不同的东西通过转换使它们能够协助起来。例如,两个没有关系的类进行交互,第一个解决方案是修改各自类的接口,但如果没有源代码的情况下怎么办呢?这种情况下就需要使用一个adapter,这个Adapter会将两个接口进行兼容,在不修改原有代码的情况下满足需求。

定义与类型

  • 定义:把一个类的接口变化成客户端需要的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够一起工作。
  • 类型:结构性

使用场景

  • 系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容
  • 想要创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的类,包括一些可能在将来引进的类一起工作
  • 需要一个统一的输出接口,而输入端的类型不可预知
  • 不是系统设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成的功能类似而接口不相同情况下的解决方案

优点

  • 能提高类的透明性和复用,现有的类服用但不需要改变
  • 目标类和适配器类解耦,提高程序扩展性
  • 符合开闭原则

缺点

  • 适配器的编写过程需要全面考虑,可能会增加系统的复杂性
  • 增加代码可读的难度

扩展

  • 对象适配器
  • 类适配器
类适配器
Class-Adapter
定义
  • 如图Class-Adapter所示,适配器是通过实现Target接口以及继承Adaptee类来实现接口转换。
  • 目标接口需要的是opration2,但是Adaptee对象只有一个Operation3,因此出现了不兼容的情况,此时通过Adapter实现一个operation2函数,将Adaptee的operation3转换为Target需要的Operation2,以此实现兼容

简单示例

  • Adaptee:
public class Adaptee {
    public void Operation3(){
        System.out.println("被适配者的方法");
    }

}
  • Target:
public interface Target {
    void opration1();
    void opration2();
}
  • Adapter:
public class Adapter extends Adaptee implements Target{
    @Override
    public void opration2() {
        super. opration3();
    }
    //...
}

对象适配器
Object-Adapter
定义
  • 与类适配器唯一不同的是,Adapter不是通过继承而是通过依赖关联Adaptee,其他都是一样的。

简单示例

  • Adapter:
public class Adapter implements Target{
  private  Adaptee adaptee = new Adaptee()
    @Override
    public void opration2() {
        adaptee. opration3();
    }
    //...
}

相关文章

  • 简说设计模式之适配器模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(Adapter...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 最常用的设计模式---适配器模式(C++实现)

    适配器模式属于结构型的设计模式,它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适...

  • iOS设计模式(5)策略模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(6)模板模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(7)建造者模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(4)抽象工厂模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(1)简单工厂模式

    设计模式系列文章 《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器模式》《iOS设计模式(4)抽象工厂...

  • iOS设计模式(2)工厂模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(3)适配器模式》《iOS设计模式(4)抽象...

  • iOS设计模式(8)外观模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

网友评论

    本文标题:设计模式--适配器模式

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