• 14 结构性模式-适配器模式


    1 适配器模式介绍

    适配器模式(adapter pattern )的原始定义是:将类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。
    在这里插入图片描述

    2 适配器模式原理

    在这里插入图片描述
    在这里插入图片描述

    3 适配器模式应用实例

    在这里插入图片描述

    /**
     * SD卡接口
     **/
    public interface SDCard {
    
        //读取SD卡
        String readSD();
        //写入SD卡
        void writeSD(String msg);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    /**
     * SD卡实现类
     **/
    public class SDCardImpl implements SDCard {
    
        @Override
        public String readSD() {
            String msg = "sd card reading data";
            return msg;
        }
    
        @Override
        public void writeSD(String msg) {
            System.out.println("sd card write data : " + msg);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    /**
     * TF卡接口
     **/
    public interface TFCard {
    
        //读取TF卡
        String readTF();
        //写入TF卡
        void writeTF(String msg);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    public class TFCardImpl implements TFCard {
        @Override
        public String readTF() {
            String msg = "tf card reading data";
            return msg;
        }
    
        @Override
        public void writeTF(String msg) {
            System.out.println("tf card write data : " + msg);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    /**
     * 适配器类(SD兼容TF)
     **/
    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("adapter write tf card");
            writeTF(msg);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    /**
     * 电脑类
     **/
    public class Computer {
    
        public String read(SDCard sdCard){
            String data = sdCard.readSD();
            return data;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    public class Client {
    
        public static void main(String[] args) {
    
            Computer computer = new Computer();
            SDCard sdCard = new SDCardImpl();
            String read = computer.read(sdCard);
            System.out.println(read);
    
            System.out.println("=====================");
            SDAdapterTF adapterTF = new SDAdapterTF();
            System.out.println(computer.read(adapterTF));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    4. 对象适配器模式

    在这里插入图片描述

    /**
     * 对象适配器-组合形式
     **/
    public class SDAdapterTF2  implements SDCard {
    
        private TFCard tfCard;
    
        public SDAdapterTF2(TFCard tfCard) {
            this.tfCard = tfCard;
        }
    
        @Override
        public String readSD() {
            System.out.println("adapter read tf card");
            return tfCard.readTF();
        }
    
        @Override
        public void writeSD(String msg) {
            System.out.println("adapter write tf card");
            tfCard.writeTF(msg);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    public class Client {
    
        public static void main(String[] args) {
    
            Computer computer = new Computer();
            SDCard sdCard = new SDCardImpl();
            System.out.println(computer.read(sdCard));
    
            System.out.println("=======================");
            TFCard tfCard = new TFCardImpl();
    
            SDAdapterTF2 adapterTF2 = new SDAdapterTF2(tfCard);
            System.out.println(computer.read(adapterTF2));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    5适配器模式总结

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    NL2SQL技术方案系列(6):金融领域知识检索,NL2SQL技术方案以及行业案例实战讲解4
    在太空里种上几茬水稻 国稻种芯:中国航天员抽身干点农活
    Django使用post和get方法做简易登录验证
    自学软件测试3个月,成功入职《字节》后的面试心得总结
    js遍历数组
    《自然语言处理(NLP)的最新进展:Transformers与GPT-4的浅析》
    c++ 可变参数模版 & 编译期排序
    使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包
    C# 读写Ini文件
    外汇天眼:外汇市场为何在周末休市?为什么周末行情有波动?
  • 原文地址:https://blog.csdn.net/weixin_39563769/article/details/134028643