栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java适配器模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java适配器模式

目录

概念

类适配器模式

对象适配器模式


概念

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。例子:我想用电脑读取TF卡,但是电脑是无法直接读取的,这个时候我们就需要一个读卡器来适配他们两个,让电脑对TF卡可读,这个时候读卡器就充当适配器的角色。

适配器模式分为类结构型模式和对象结构型模式两种,类结构型模式类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。前者不符合合成复用原则。

类适配器模式

现象:电脑可读取SD卡,不可直接读取TF卡,想办法让电脑读取TF卡

首先我们需要一个电脑类

public class Computer {
    //从SD读取数据
    public String readSD(SDCard sdCard){
        return sdCard.readSD();
    }
}

电脑有读取SD卡的功能,所以我们应该传入一个具有SDcard实现的类。我们先创建SDcard接口,再创建它的实现类。

//接口
public interface SDCard {
    //从SD卡读取数据
    String readSD();
}
//实现
public class SDCardImpl implements SDCard {
    @Override
    public String readSD() {
        return "从SD卡读取数据";
    }
}

这个时候我们测试用电脑读取SD卡,发现一切正常。

        //创建计算机类
        Computer computer = new Computer();
        //从sd卡读取数据
        String msg = computer.readSD(new SDCardImpl());
        System.out.println(msg);//从SD卡读取数据

但是我们要做的是读取TF卡

所以,首先我们先要有TFCard接口以及它的实现类

//TF接口
public interface TFCard {
    //从TF卡读取数据
    String readTF();
}
//TF实现类
public class TFCardImpl implements TFCard {
    @Override
    public String readTF() {
        return "从TF卡读取数据";
    }
}

由于无法直接读取TF卡,所以我们加了适配器

//因为电脑可以读取SD卡,所以我们实现SDCard接口
//我们现在想读取TF卡,所以为了使用TF的方法,我们继承了TF的实现类
public class Adapter extends TFCardImpl implements SDCard {
    @Override
    public String readSD() {
        System.out.println("适配读取tf卡");
        return readTF();
    }
}

来看电脑读取TF卡的效果

        //创建计算机类
        Computer computer = new Computer();
        //从适配器读取TF数据
        String msg = computer.readSD(new Adapter());
        System.out.println(msg);
        //适配读取tf卡
        //从TF卡读取数据

对象适配器模式

符合合成复用原则,使用较多。

对于上边代码,主要改写的就是Adapter类。

可以更形象的理解为现实中把TF卡插入读卡器。

public class Adapter implements SDCard {
    private TFCardImpl tfCard;
    public Adapter(TFCardImpl tfCard){
        this.tfCard = tfCard;
    }
    @Override
    public String readSD() {
        System.out.println("适配读取tf卡");
        return tfCard.readTF();
    }
}

测试

        //创建计算机类
        Computer computer = new Computer();
        //创建插入TF卡的适配器
        Adapter adapter = new Adapter(new TFCardImpl());
        //从适配器读取TF数据
        String msg = computer.readSD(adapter);
        System.out.println(msg);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712311.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号