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

      假如我的手机是typec类型的充电口,但是现在却只有个传统的MicroUSB充电线,怎么办?很简单,弄个转换接头,MicroUSB口转化成typec的,问题解决。这就是适配器的应用。

      适配器就是个转化适配中间接口,可以将不匹配的两件事整合到一起,把不匹配变的匹配。

      通常,适配器有三种:类适配器、对象适配器。

        类适配器:继承实现,静态定义

        对象适配器:代理实现,动态组合模式

      一、类适配器

        1.1、有个传统的Micro USB的充电线

    package com.cn.adapter.classAdapter;
    
    /**
     * 有个传统的Micro USB的充电线
     * 
     * @author cfang
     * 2018年6月1日 下午4:13:01
     */
    public interface MicroUSB {
    
        void isMicroUSB();
    }

        1.2、手机充电口为typec

    package com.cn.adapter.classAdapter;
    
    /**
     * 手机充电口为typec
     * 
     * @author cfang
     * 2018年6月1日 下午4:14:28
     */
    public interface TypeC {
    
        void isTypeC();
    }
    package com.cn.adapter.classAdapter;
    
    
    public class TypeCImpl implements TypeC{
    
        @Override
        public void isTypeC() {
            System.out.println("typec充电口");
        }
    
    }

        1.3、整个适配器adapter,将MicroUSB 转化成typec

    package com.cn.adapter.classAdapter;
    
    /**
     * 用于将MicroUSB接口转化成tytpec接口
     * 
     * @author cfang
     * 2018年6月1日 下午4:46:28
     */
    public class Adapter extends TypeCImpl implements MicroUSB{
    
        @Override
        public void isMicroUSB() {
            isTypeC();
        }
    
    }

        1.4、测试main方法

    package com.cn.adapter.classAdapter;
    
    public class App {
    
        public static void main(String[] args) {
            
            MicroUSB microUSB = new Adapter();
            microUSB.isMicroUSB();
        }
    }

      二、对象适配器

        2.1、TypeC接口、MicroUSB接口以及实现同上

        2.3、适配器类

    package com.cn.adapter.objectAdapter;
    
    import com.cn.adapter.classAdapter.MicroUSB;
    import com.cn.adapter.classAdapter.TypeC;
    
    public class Adapter implements MicroUSB{
        
        private TypeC typeC;
        public Adapter(TypeC typeC){
            this.typeC = typeC;
        }
    
        @Override
        public void isMicroUSB() {
            typeC.isTypeC();
        }
        
    
    }

        2.4、测试main方法

    package com.cn.adapter.objectAdapter;
    
    import com.cn.adapter.classAdapter.MicroUSB;
    import com.cn.adapter.classAdapter.TypeC;
    import com.cn.adapter.classAdapter.TypeCImpl;
    
    public class App {
    
        public static void main(String[] args) {
            
            TypeC typeC = new TypeCImpl();
            MicroUSB microUSB = new Adapter(typeC);
            microUSB.isMicroUSB();
        }
    }

      三、很多时候,还会遇到一种适配器,接口的适配器,很简单,假如有个很大的接口,几十个方法,但是并不是每个实现该接口的都必须得实现所有方法,此时,就可以做个抽象的中间类,实现大接口,方法实现都是空。之后开发,都继承这个抽象类,用哪些方法,就覆写哪些方法。相对简单,代码就不上了。

  • 相关阅读:
    Azure 虚拟机安全加固整理
    AzureARM 使用 powershell 扩容系统磁盘大小
    Azure Linux 云主机使用Root超级用户登录
    Open edX 配置 O365 SMTP
    powershell 根据错误GUID查寻错误详情
    azure 创建redhat镜像帮助
    Azure Powershell blob中指定的vhd创建虚拟机
    Azure Powershell 获取可用镜像 PublisherName,Offer,Skus,Version
    Power BI 连接到 Azure 账单,自动生成报表,可刷新
    Azure powershell 获取 vmSize 可用列表的命令
  • 原文地址:https://www.cnblogs.com/eric-fang/p/9122564.html
Copyright © 2011-2022 走看看