美文网首页
理解适配器模式

理解适配器模式

作者: 梦的飞翔_862e | 来源:发表于2018-11-23 18:48 被阅读0次
概念理解

适配器是将一个接口转换为另一个接口的一种实现,它是一种结构型模式。原接口和目标接口本来不兼容,通过适配器类,可以使用目标接口来调用原接口的方法。

场景描述

每个国家的电压是不一样的, 中国室内的电压一般是220v,美国,日本的电压是110v,假设笔记本需要的电压是12.6v 这时,就需要适配器,将室内电压转为笔记本需要的电压。

设计一:对象适配器

对象适配器模式是适配器实现目标接口,持有对原接口的引用。

public interface  ChinaVoltageInterface {
    void use220v();
}
public class ChinaVoltageInterfaceImpl implements ChinaVoltageInterface {
    @Override
    public void use220v() {
        System.out.println("this is 220v");
    }
}
public interface NotebookVoltageInterface {
    void use12v();
}
public class ChinaVoltageToNotebookAdapter implements NotebookVoltageInterface {
    private ChinaVoltageInterface chinaVoltageInterface;
    public ChinaVoltageToNotebookAdapter(ChinaVoltageInterface chinaVoltageInterface) {
        this.chinaVoltageInterface=chinaVoltageInterface;
    }

    @Override
    public void use12v() {
        System.out.println("notebook use 12v ");
        System.out.println(" notebook voltage use china voltage");
        chinaVoltageInterface.use220v();
    }
}
public class TestAPP {
    public static void main(String[] args) {
        ChinaVoltageInterface chinaVoltageInterface = new ChinaVoltageInterfaceImpl();
        NotebookVoltageInterface notebookVoltageInterface = new ChinaVoltageToNotebookAdapter(chinaVoltageInterface);
        notebookVoltageInterface.use12v();
    }
}

设计二:类适配器模式
类适配器模式是适配器继承原接口实现类,然后实现目标接口。


public class ChinaVoltageToNotebookAdapter2 extends ChinaVoltageInterfaceImpl implements NotebookVoltageInterface {

    @Override
    public void use12v() {
        System.out.println("notebook use 12v ");
        System.out.println(" notebook voltage use china voltage");
        super.use220v();
    }
}
public class TestAPP {
    public static void main(String[] args) {
        NotebookVoltageInterface notebookVoltageInterface =new ChinaVoltageToNotebookAdapter2();
        notebookVoltageInterface.use12v();
    }
}
enumeration转iterator实例:使用适配器
public class EnumerationIterator implements Iterator {
    private Enumeration enumeration;

    public EnumerationIterator(Enumeration enumeration) {
        this.enumeration = enumeration;
    }

    @Override
    public boolean hasNext() {
        return enumeration.hasMoreElements();
    }

    @Override
    public Object next() {
        return enumeration.nextElement();
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException();
    }
}
适配器与装饰器的区别

装饰器是在原接口的基础上增加新的操作,来实现不同的功能,适配器是原有接口的一个伪装,把原接口当做目标接口来使用,并不会增加新的操作。

代码实例https://github.com/jxl198/designPattern/tree/master/adapter

相关文章

  • 设计模式(java)- 模版方法模式

    之前学习的是适配器模式与外观模式。 对外观模式与适配器模式的理解 适配器模式的意思就是适配,将三孔插座转换为二孔插...

  • 适配器模式

    1、 适配器模式介绍 适配器模式,也叫Adapter或者Wrapper设计模式,根据字面意思来理解,就是为了达到适...

  • 适配器模式(Adapter)

    网上看到不少关于适配器模式的讲解,其中对于适配器模式解释的过于专业,一时不是特别理解适配器模式到底是用来干嘛的,具...

  • JS设计模式---10.适配器模式

    适配器模式的作用 适配器模式可用来在现有接口和不兼容的类之间进行适配,使用这种模式的对象又叫包装器。(个人理解其实...

  • Java设计模式(二)

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

  • 适配器模式

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

  • 08、适配器模式

    适配器模式。这个模式相对来说还是比较简单、好理解的,应用场景也很具体,总体上来讲比较好掌握。 关于适配器模式,主要...

  • 设计模式之适配器模式

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

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

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

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

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

网友评论

      本文标题:理解适配器模式

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