Java适配器模式

Java适配器模式,第1张

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);

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5708961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存