zoukankan      html  css  js  c++  java
  • Java设计模式之适配器模式

    适配器模式有三种:类适配器,对象适配器,接口适配器。

    1.类适配器

      原理:通过继承来实现适配器的功能。

      例子:手中现在有ps2插头的设备,但是主机上只有usb的接口。这个时候就需要搞一个转换器,将ps2插头转换为usb插头就可以使用啦。

        Usb:描述Usb接口格式。

        UsbImpl:接口Usb的实现类,是具体的Usb接口格式。

        Ps2:描述Ps2接口格式。

        Ps2Adapter:用于将Ps2接口格式转换为Usb接口格式。

      代码实例如下:

    /**
     * @Author long
     * @Date 2019/3/20 21:59
     */
    public interface Usb {
    
        void isUsb();
    }
    /**
     * @Author long
     * @Date 2019/3/20 21:59
     */
    public class UsbImpl implements Usb {
    
        @Override
        public void isUsb() {
            System.out.println("这个是usb接口");
        }
    }
    /**
     * @Author long
     * @Date 2019/3/20 22:01
     */
    public interface Ps2 {
    
        void isPs2();
    }
    /**
     * @Author long
     * @Date 2019/3/20 22:02
     */
    public class Ps2Adapter extends UsbImpl implements Ps2 {
    
        @Override
        public void isPs2() {
            isUsb();
        }
    }
    /**
     * @Author long
     * @Date 2019/3/20 21:58
     */
    public class Client {
    
        public static void main(String[] args) {
            Ps2 ps2 = new Ps2Adapter();
            ps2.isPs2();
        }
    }

    2.对象适配器

      原理:通过组合来实现适配器的功能。

        例子:手中现在有ps2插头的设备,但是主机上只有usb的接口。这个时候就需要搞一个转换器,将ps2插头转换为usb插头就可以使用啦。

        Usb:描述Usb接口格式。

        UsbImpl:接口Usb的实现类,是具体的Usb接口格式。

        Ps2:描述Ps2接口格式。

        Ps2Adapter:用于将Ps2接口格式转换为Usb接口格式。

        代码实例如下:

    /**
     * @Author long
     * @Date 2019/3/20 22:18
     * 描述Usb接口格式
     */
    public interface Usb {
    
        void isUsb();
    }
    /**
     * @Author long
     * @Date 2019/3/20 22:19
     */
    public class UsbImpl implements Usb {
    
        @Override
        public void isUsb() {
            System.out.println("我是Usb接口");
        }
    }
    /**
     * @Author long
     * @Date 2019/3/20 22:20
     */
    public interface Ps2 {
        void isPs2();
    }
    /**
     * @Author long
     * @Date 2019/3/20 22:20
     */
    public class Ps2Adapter implements Ps2 {
    
        private Usb usb;
    
        public Ps2Adapter(Usb usb){
            this.usb = usb;
        }
    
        @Override
        public void isPs2() {
            usb.isUsb();
        }
    }
    /**
     * @Author long
     * @Date 2019/3/20 22:17
     */
    public class Client {
        public static void main(String[] args) {
    
            Ps2 ps2 = new Ps2Adapter(new UsbImpl());
            ps2.isPs2();
        }
    }

     

     

  • 相关阅读:
    vuecli 脚手架总结
    javascript 如何继承父类
    拖拽面向对象的写法
    获得焦点并且复制文本
    使用vuecli脚手架安装的eslint 容易犯错的地方
    javascript 实现分享功能
    原生javascript 获得css样式有几种方法?
    原生javascript 改写的tab选项卡
    [转载]c# 嵌入资源文件
    [转载]C# log4net应用
  • 原文地址:https://www.cnblogs.com/code-star/p/10568215.html
Copyright © 2011-2022 走看看