• 技术文章 >java >java基础

    java适配器模式的两种分类

    小妮浅浅小妮浅浅2021-02-25 17:37:20原创1588

    1、类适配器模式

    实现方式:定义一个适配器类来实现当前系统的业务接口,同时又继承现有组件库中已经存在的组件。

    public class HelloWorld {
        public static void main(String[] args) {
            Computer computer = new Computer();
            SDCard sdCard = new SDCardImpl();
            System.out.println(computer.readSD(sdCard));
     
            System.out.println("------------");
     
            SDAdapterTF adapter = new SDAdapterTF();
            System.out.println(computer.readSD(adapter));
        }
    }
     
    // SD卡的接口
    interface SDCard {
        // 读取SD卡功能
        String readSD();
     
        // 写入SD卡功能
        void writeSD(String msg);
    }
     
    // SD卡实现类
    class SDCardImpl implements SDCard {
        @Override
        public String readSD() {
            String msg = "sd card read a msg: hello sd card";
            return msg;
        }
     
        @Override
        public void writeSD(String msg) {
            System.out.println("sd card write msg: " + msg);
        }
    }
     
    // 电脑类
    class Computer {
        public String readSD(SDCard sdCard) {
            if (sdCard == null) {
                throw new NullPointerException("sd card null");
            }
            return sdCard.readSD();
        }
    }
     
    // TF卡接口
    interface TFCard {
        // 读取TF卡功能
        String readTF();
     
        // 写入TF卡功能
        void writeTF(String msg);
    }
     
    // TF卡实现类
    class TFCardImpl implements TFCard {
        @Override
        public String readTF() {
            String msg = "sd card read a msg: hello tf card";
            return msg;
        }
     
        @Override
        public void writeTF(String msg) {
            System.out.println("tf card write msg: " + msg);
        }
    }
     
    // 定义适配器类(SD兼容TF)
    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);
        }
    }

    2、对象适配器模式

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

    public class HelloWorld {
        public static void main(String[] args) {
            Computer computer = new Computer();
            SDCard sdCard = new SDCardImpl();
            System.out.println(computer.readSD(sdCard));
     
            System.out.println("------------");
            
            TFCard tfCard = new TFCardImpl();
            SDAdapterTF adapter = new SDAdapterTF(tfCard);
            System.out.println(computer.readSD(adapter));
        }
    }
     
    // SD卡的接口
    interface SDCard {
        // 读取SD卡功能
        String readSD();
     
        // 写入SD卡功能
        void writeSD(String msg);
    }
     
    // SD卡实现类
    class SDCardImpl implements SDCard {
        @Override
        public String readSD() {
            String msg = "sd card read a msg: hello sd card";
            return msg;
        }
     
        @Override
        public void writeSD(String msg) {
            System.out.println("sd card write msg: " + msg);
        }
    }
     
    // 电脑类
    class Computer {
        public String readSD(SDCard sdCard) {
            if (sdCard == null) {
                throw new NullPointerException("sd card null");
            }
            return sdCard.readSD();
        }
    }
     
    // TF卡接口
    interface TFCard {
        // 读取TF卡功能
        String readTF();
     
        // 写入TF卡功能
        void writeTF(String msg);
    }
     
    // TF卡实现类
    class TFCardImpl implements TFCard {
        @Override
        public String readTF() {
            String msg = "sd card read a msg: hello tf card";
            return msg;
        }
     
        @Override
        public void writeTF(String msg) {
            System.out.println("tf card write msg: " + msg);
        }
    }
     
    // 定义适配器类(SD兼容TF)
    class SDAdapterTF implements SDCard {
        private TFCard tfCard;
     
        public SDAdapterTF(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);
        }
    }

    以上就是java适配器模式的两种分类,希望能对大家有所帮助。

    专题推荐:java适配器模式
    品易云
    上一篇:java适配器模式是什么 下一篇:java装饰者模式是什么?

    相关文章推荐

    • java如何下载web文件• java代理模式有几种?• java之JDK动态代理是什么• java中CGLIB动态代理的介绍• java中不同代理的对比• java适配器模式是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网