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、接口适配器模式介绍

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

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

  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/houchen/p/13763511.html
Copyright © 2011-2022 走看看