适配器模式

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

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

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

原文地址:https://www.cnblogs.com/houchen/p/13763511.html