美文网首页
设计模式之适配器模式

设计模式之适配器模式

作者: 在下喵星人 | 来源:发表于2021-04-28 07:49 被阅读0次

    适配器模式将一个类接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。

    适配器的例子,现实生活随处可见。比如你只有USB-C接口的耳机,但是你的手机只有TYPE-C接口,这个时候你可能需要一个TYPE-C适配器。


    适配器工作起来就如同一个中间人,他将客户所发出的请求转换成原有接口能理解的请求。


    定义两个接口类

    public interface TYPEProtocol {
        /**
         * TYPE-协议
         */
        void typeProtocol();
    }
    
    public interface USBProtocol {
        /**
         * USB-C协议
         */
        void usbProtocol();
    }
    
    

    充电器实现TYPE-C接口

    public class Charger implements TYPEProtocol{
    
        /**
         * 充电器实现TYPE-C协议
         */
        public void typeProtocol() {
            System.out.println("充电器使用TYPE-C协议");
        }
    }
    

    耳机实现USB-C接口

    public class Earphone implements USBProtocol {
    
        /**
         * 耳机实现USB-C协议
         */
        public void usbProtocol() {
            System.out.println("耳机使用USB-C协议");
        }
    }
    

    手机类

    public class Cellphone {
    
        /**
         * 手机接入TYPE-C
         * @param protocol
         */
        public void joinUp(TYPEProtocol protocol){
            protocol.typeProtocol();
        }
    }
    

    运行

    public class Main {
        public static void main(String[] args) {
            TYPEProtocol charger = new Charger();
            USBProtocol earphone = new Earphone();
    
    
            Cellphone cellphone = new Cellphone();
            //充电器接入手机
            cellphone.joinUp(charger);
    
    
        }
    }
    

    结果

    充电器使用TYPE-C协议
    

    因为耳机类并没有实现TYPE-C协议,而是实现USB-C协议,所以无法接入手机。创建TYPE-C适配类

    public class TYPEProtocolAdapter implements TYPEProtocol{
    
        private USBProtocol usbProtocol;
    
        public TYPEProtocolAdapter(USBProtocol usbProtocol) {
            this.usbProtocol = usbProtocol;
        }
    
        @Override
        public void typeProtocol() {
            System.out.println("适配TYPE-C协议");
            usbProtocol.usbProtocol();
        }
    }
    

    运行

    public class Main {
        public static void main(String[] args) {
            TYPEProtocol charger = new Charger();
            USBProtocol earphone = new Earphone();
            TYPEProtocol typeProtocolAdapter = new TYPEProtocolAdapter(earphone);
    
            Cellphone cellphone = new Cellphone();
            //充电器接入手机
            cellphone.joinUp(charger);
            //通过适配器接入手机
            cellphone.joinUp(typeProtocolAdapter);
    
        }
    
    }
    

    通过适配器USB-C协议也能接入手机,运行结果

    充电器使用TYPE-C协议
    适配TYPE-C协议
    耳机使用USB-C协议
    

    相关文章

      网友评论

          本文标题:设计模式之适配器模式

          本文链接:https://www.haomeiwen.com/subject/ohxmrltx.html