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

    1 适配器模式基本介绍

    1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,

    让原本因接口不匹配不能一起工作的两个类可以协同工作

    2)适配器模式属于结构性模式

    3)主要分为3类:类适配器,对象适配器,接口适配器

    2 工作原理

    1、适配器模式:将一个类的接口转换成另一种接口,让原本不兼容的类可以兼容

    2、从用户的角度看不到被适配者,是解耦的

    3、用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法

    4、用户收到反馈结果,感觉是和目标接口交互

    3 类适配器模式

    1、类适配器模式简介

    基本介绍: Adapter类,通过继承被适配的类,实现适配接口,

    2、适配器模式实例

    将220v的电压转化为5v输出!

    clipboard

    代码实现

    //被适配者:
    public class Voltage220V {
        public int output220V(){
            int src =220;
            System.out.println("电压="+src+"伏");
            return src;
        }
    }
    //适配接口
    public interface IVoltage5V {
        public int transfer5V();
    }
    //适配器
    public class VoltageAdapter extends Voltage220V implements IVoltage5V{
        @Override
        public int transfer5V() {
            int srcV = output220V();
            int dstV =srcV/44;
            return dstV;
        }
    }
    //使用适配器的类,就将适配器聚合到该类中
    public class Phone {
    
        public void charging(IVoltage5V iVoltage5V){
            if(iVoltage5V.transfer5V()==5){
                System.out.println("电压为5v~ 可以充电!");
            }else{
                System.out.println("电压不等于5v~ 不可以充电!");
            }
        }
    }
    //测试
    public class Client {
        public static void main(String[] args) {
            System.out.println("类适配器模式~~~~~~~~~~");
            Phone phone =new Phone();
            phone.charging(new VoltageAdapter());
        }
    }

    clipboard

     

    4 对象适配器模式

    1、对象适配器模式基本介绍

    基本思路和类的适配器模式相同,只是适配器类,不再继承被适配的类,而是持有被适配类的实例

    2、对象适配器应用实例

    将220v的电压转化为5v输出!

    适配器的代码有稍微的区别:

    public class VoltageAdapter  implements IVoltage5V {
    
        private Voltage220V voltage220V;
    
        public VoltageAdapter(Voltage220V voltage220V) {
            this.voltage220V = voltage220V;
        }
    
        @Override
        public int transfer5V() {
            int dstV =0;
            if(voltage220V!=null){
                int srcV = voltage220V.output220V();
                dstV =srcV/44;
            }
            return dstV;
        }
    }

    5 接口适配器模式

    1、接口适配器模式介绍

    适用于一个接口不想使用其所有方法的情况

    当不需要全部实现接口提供的方法时,可以设计一个抽象类实现接口,并未该接口中的每个方法提供一个默认实现(空方法),那么该抽象类的子类可以有选择的覆盖父类的某些方法来实现需求

  • 相关阅读:
    服务器消息机制实现记录
    转载SQL经典代码按某一字段分组取最大(小)值所在行的数据
    记录js获取当前URL
    (原创)xilinx IP建立向导创建的目录和文件都是做什么的?由错误ERROR:HDLCompiler:Instantiating <xx> from unknown module <xx>引发的思考
    [转]NTFS3G的安装和配置
    (原创)Notepad++怎么实现双视图/双窗口?
    (原创)Quartus硬件工程路径改变,nios工程该怎么办?
    (原)verilog中的reg类型变量,一定会综合出触发器吗?
    (Windows)使用纯净版本的系统碟安装系统后没有网卡驱动怎么办?
    [转]NIOS_II的Boot过程分析
  • 原文地址:https://www.cnblogs.com/houchen/p/13763511.html
Copyright © 2011-2022 走看看