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

设计模式之适配器模式

作者: 日三省 | 来源:发表于2016-07-24 15:15 被阅读42次

什么是适配器模式?看(盗来的)图。

适配器模式 适配器模式

足够直观,不费口舌解释了。

直接上代码。适配器模式分为三种:

类的适配器模式

public class DataProvider {
    public String getUserInfoVersion1(int userid) {
        return "this is userinfo";
    }
}
public interface IAdapter {
    String getUserInfoVersion2(int userid);
}
public class MyAdapter extends DataProvider implements IAdapter {
    @Override
    public String getUserInfoVersion2(int userid) {
        return getUserInfoVersion1(userid);
    }
}
public class MyClient {
    IAdapter adapter = null;
    private void getUserInfoVersion2(int userid) {
        adapter = new MyAdapter();
        adapter.getUserInfoVersion2(userid);
    }
}

MyAdapter完成了从方法getUserInfoVersion2到getUserInfoVersion1的转换。

对象的适配器模式

MyAdapter稍作修改。

public class MyAdapter extends DataProvider implements IAdapter {
    DataProvider dataProvider = null;
    public MyAdapter(DataProvider dataProvider) {
        this.dataProvider = dataProvider;
    }
    @Override
    public String getUserInfoVersion2(int userid) {
        return dataProvider.getUserInfoVersion1(userid);
    }

}
public class MyClient {
    IAdapter adapter = null;
    private void getUserInfo(int userid) {
        DataProvider dataProvider = new DataProvider();
        adapter = new MyAdapter(dataProvider);
        adapter.getUserInfoVersion2(userid);
    }
}

接口的适配器模式

public interface IAdapter2 {
    void method1();
    void method2();
    void method3();
    void method4();
    void method5();
    void method6();
}
public abstract class MyAdapter2 implements IAdapter2 {
    @Override
    public void method1() {
    }
    @Override
    public void method2() {
    }
    @Override
    public void method3() {
    }
    @Override
    public void method4() {
    }
    @Override
    public void method5() {
    }
    @Override
    public void method6() {
    }
}
public class MyClient2_1 extends MyAdapter2 {
    @Override
    public void method1() {
    }
    @Override
    public void method2() {
    }
}
public class MyClient2_2 extends MyAdapter2 {
    @Override
    public void method4() {
    }
    @Override
    public void method5() {
    }
}

一个接口中定义了多个方法,但是,子类又不想每个方法都去实现一下,怎么办呢?中间放一个抽象类作为适配器。这样,子类就可以有选择的重写自己真正需要的方法了。

相关文章

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

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(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/obawjttx.html