java设计模式——结构型模式——适配器模式

适配器模式是一种结构型设计模式,用于将不同接口的类进行兼容,使得原本无法一起工作的类能够协同工作。它分为类适配器和对象适配器两种实现方式。类适配器通过继承适配者类并实现目标接口,而对象适配器则是通过持有适配者对象来实现目标接口。在Java的IO流中,如Reader和InputStream的转换就应用了适配器模式。
摘要由CSDN通过智能技术生成

结构型模式——适配器模式

适配器模式概述:

将一个类的接口转换成业务层代码需要的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

适配器模式结构:

适配器模式包括以下主要角色:
目标接口:当前系统业务所期望的接口,他可以是抽象类或者接口。
适配者类:他是被访问和适配的现存的组件库中的组件接口。
适配器类:他是一个转换器,通过继承或者引用是陪着的对象,把适配者接口转换成目标接口,让客户按照目标接口的格式访问适配者。

适配器模式的实现

适配器模式分为类适配器模式和对象适配器模式。前者类与类之间的耦合度比较高,切要求了解现有组件库汇总的相关组件的内部结构,所以应用比较少。
类适配器模式
定义一个适配器类来实现当前系统的业务接口,同时有继承现有组件库中已经存在的组件。以下述事例为例,适配器类是一个TFCardImpl子类,并且实现了SDCard接口,即具有读取SDCard功能的电脑可以读取这个子类。

/**
 * SDCard是目标接口
 */
public interface SDCard {
    String readSD();
    void writeSD(String msg);
}

/**
 * TFCardImpl类是适配者类
 */
public interface TFCard {
    String readTF();
    void writeTF(String msg);
}
public class TFCardImpl implements TFCard{
    @Override
    public String readTF() {
        String msg = "tf card read msg : hello word tf card";
        return msg;
    }

    @Override
    public void writeTF(String msg) {
        System.out.println("tf card write a msg:" + msg);
    }
}

/**
 * SDAdapterTF是适配器类
 */
public class SDAdapterTF extends TFCardImpl implements SDCard{
    @Override
    public String readSD() {
        System.out.println("adapter read tf card");
        return readTF();
    }

    @Override
    public void writeSD(String msg) {
        System.out.println("adaptor write tf card");
        writeTF(msg);
    }
}

对象适配器模式
对象适配器模式可采用将现有组件库中已经实现的组件引入适配器类中,该类实现当前系统的业务接口。

/**
 * SDAdapterTF是适配器类
 */
public class SDAdapterTF implements SDCard{
    private TFCard tfCard;
    public SDAdapterTF(TFCard tfCard){
        this.tfCard = tfCard;
    }
    @Override
    public String readSD() {
        return tfCard.readTF();
    }

    @Override
    public void writeSD(String msg) {
        tfCard.writeTF();
    }
}

适配器模式的应用实例:

在jdk源码中,Reader(字符流)、InputStream(字节流)的转换就使用了适配器模式,借助InputStreamReader适配器

文章内容为个人学习总结,如有错误望指正。
参考链接https://www.bilibili.com/video/BV1Np4y1z7BU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值