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

设计模式《适配器模式》

作者: 天道__ | 来源:发表于2018-07-19 17:46 被阅读0次

引言

  上一节我们讲过迭代器模式,这节我们说说适配器模式。

示例地址

  Demo地址

类图

image

定义

   适配器模式把一个类的接口变换成客户端所期待的另外一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。

使用场景

  1. 系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。
  2. 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
  3. 需要一个统一的输出接口,而输入端的类型不可预知。

适配器模式

  我们都知道,去香港旅游需要换上美元。换美元我们去哪换呢。银行,没错银行不仅能够兑换美元,还可以兑换其他的币种。这里银行就是我们设计模式中的适配器。我们看看怎么实现。

类适配模式

1. 人民币
/**
 * 人民币
 *
 * @author 512573717@qq.com
 * @created 2018/7/23  下午3:53.
 */
public class MoneyRMB {

    public void getRMB(int money) {
        System.out.println("我是" + money + "人民币!!!");
    }
}
2. 美元
/**
 * 美元
 *
 * @author 512573717@qq.com
 * @created 2018/7/23  下午3:57.
 */
public interface IMoneyDollar {
    double getDollar(int money);
}
3. 类适配器(美元转换人民币的适配器)
/**
 * 美元转换人民币的适配器
 *
 * @author 512573717@qq.com
 * @created 2018/7/23  下午4:01.
 */
public class MoneyAdapter extends MoneyRMB implements IMoneyDollar {
    @Override
    public double getDollar(int money) {
        System.out.println("人民币转换美元");
        return money / 6.8;
    }
}
4. Client
  //类适配器
  System.out.println("老王去银行兑换美元");
  MoneyAdapter adapter = new MoneyAdapter();
  double result=adapter.getDollar(100);
  System.out.println("兑换了"+result+"$");

对象适配器

1. 对象适配器(美元转换人民币的适配器)
/**
 * 美元转换人民币的适配器
 *
 * @author 512573717@qq.com
 * @created 2018/7/23  下午5:07.
 */
public class MoneyAdapter implements IMoneyDollar {

    private MoneyRMB mMoneyRMB;

    public MoneyAdapter(MoneyRMB moneyRMB) {
        mMoneyRMB = moneyRMB;
    }

    @Override
    public double getDollar(int money) {
        System.out.println("人民币转换美元");
        return money / 6.8;
    }

    public void getRMB(int money) {
        mMoneyRMB.getRMB(money);
    }
}
2. Client
   // 对象适配器
   System.out.println("老王去银行兑换美元");
   MoneyAdapter adapter = new MoneyAdapter(new MoneyRMB());
   double result = adapter.getDollar(100);
   System.out.println("兑换了" + result + "$");

接口适配器

1. 先定义接口
/**
 * 接口
 *
 * @author 512573717@qq.com
 * @created 2018/7/24  下午2:05.
 */
public interface Port {

    // 网络端口80
    void NET();

    // Tomcat容器端口8080
    void Tomcat();

    // Oracle数据库端口1521
    void Oracle();

    // 文件传输FTP端口21
    void FTP();
}
2. 接口适配器
/**
 * 接口适配器
 *
 * @author 512573717@qq.com
 * @created 2018/7/24  下午2:06.
 */
public class PortAdapter implements Port {
    @Override
    public void NET() {

    }

    @Override
    public void Tomcat() {

    }

    @Override
    public void Oracle() {

    }

    @Override
    public void FTP() {

    }
}
3.聊天适配器
/**
 * 聊天适配器
 *
 * @author 512573717@qq.com
 * @created 2018/7/24  下午2:06.
 */
public class ChatAdapter extends PortAdapter {
    @Override
    public void NET() {
        System.out.println("HTTP ://Hello world!");
    }

    @Override
    public void FTP() {
        System.out.println("FTP:// File upload succeddful!");
    }
}
4. Client
 //接口适配器
 Port port = new ChatAdapter();
 port.FTP();
 port.NET();

总结

相关文章

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

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