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

设计模式之适配器模式

作者: dongxiawu | 来源:发表于2017-12-30 20:34 被阅读0次
适配器模式.jpg

版权声明:本文为 冬夏 原创发表在公众号「Android从入门到精通」,可以随意转载,但请注明出处。

适配器模式(Adapter)是我们在开发过程中经常会用到的一个设计模式。它的作用是将一个类的接口,转换另一个接口。

那么为什么要进行转换呢?想想生活的例子你就知道了。设想一下,你出国旅游,发现你的手机的充电器不能插进当地的插座,因为标准不同。这时候你会买一个转接器,然后解决了这个问题。这个转接器就是适配器,适配器模式也就是为了解决这一类问题而存在的。

我们回想一下转接器的工作原理:转接器一般由两面组成,一面是适配你的手机充电器插头的插座,另一面是适配当地插座的插头。你将你的手机充电器插进转接器,再将转接器插进当地的插座,就完成了适配。

适配器模式UML图如下:


适配器模式UML.png

由此我们可以总结一下适配器模式的要点:

  1. 适配器将一个对象包装起来以改变其接口以符合用户要求。

那么我们如何用代码的形式实现适配器模式呢?假设我们现在有这么一个情景:现在手头上有一个遥控,上面有“上”和“下”两个按钮,但是我们希望用它来控制一个风扇的开关,这样就有了一个从“上”和“下”到“开”和“关”的转换。这种情况下就可以用到适配器模式了。

首先是风扇类,非常简单,有 on 和 off 两个方法

  public class Fan {
      public void on(){
          System.out.println("The fan is on");
      }

      public void off(){
          System.out.println("The fan is off");
      }
  }

接着是遥控类,也非常简单,有 up 和 down 两个 方法

public class Controler {
    public void up(){
        System.out.println("The up button is pressed");
    }

    public void down(){
        System.out.println("The down button is pressed");
    }
}

接着就是我们的适配器接口,上面和风扇一样有 on 和 off 两个方法。

public interface Adapter {

    void on();

    void off();
}

接下来,我们把遥控和适配器组合起来,变成了风扇遥控器,按下 up 按钮就是风扇开,按下 down 按钮就是风扇关。

public class FanControler extends Controler implements Adapter {
    private Fan mFan;

    public FanControler(Fan fan){
        mFan = fan;
    }

    @Override
    public void up() {
        on();
    }

    @Override
    public void down() {
        off();
    }

    @Override
    public void on() {
        mFan.on();
    }

    @Override
    public void off() {
        mFan.off();
    }
}

接下来我们就可以运行起来了:

public class Main {
    public static void main(String[] agrs){
        Fan fan = new Fan();
        Controler fanControler = new FanControler(fan);

        fanControler.up();
        fanControler.down();
    }
}

运行结果如下:

The fan is on
The fan is off

由此可见,我们成功地将只有上和下两个按钮的遥控转换成了能够控制风扇开关的遥控器。

总结一下:

适配器模式能够将一个接口转换成另一个接口。具体是通过实现待转换的接口,同时持有目标接口,在内部进行接口转换实现的。

欢迎关注我的个人公众号,一起学习Android、Java、设计模式等技术!


Android从入门到精通

相关文章

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

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

  • 设计模式 - 目录

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

  • 设计模式详解——适配器模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之适配器模式,Android设计模式源码解...

  • 设计模式之适配器模式

    设计模式之适配器模式 1. 模式定义 适配器模式又称包装器模式,属于结构型模式,它可以将一个接口转换成客户希望的另...

  • 最常用的设计模式---适配器模式(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)抽象工厂...

网友评论

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

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