设计模式整理(10) 适配器模式

2019-02-18  本文已影响0人  安静的蓝孩子

学习《Android 源码设计模式解析与实践》系列笔记

介绍

经常会碰到两个没有关系的类型之间需要进行交互,但是双方又都不想做出修改,这种尴尬的情况下,可以增加一个 Adapter 的角色,进行两个不同类型的接口的兼容。
例如:读卡器是作为内存卡和笔记本之间的适配器。将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

适配器模式属于结构型模式

定义

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法再一起工作的两个类能够在一起工作。

使用场景

结构

适配器模式 UML 图

实现

生活中的电压为 220V,而我们使用的笔记本使用的电压只需要 5V,这时我们就需要使用适配器进行转换。

/**
 * Target 角色
 */
public interface Voltage5 {
    public int getVoltage5();
}
/**
 * Adaptee 角色,被适配的对象
 */
public class Voltage220 {
    public int getVoltage220() {
        System.out.println("Voltage 220V");
        return 220;
    }
}
/**
 * Adapter 角色,负责把 220V 电压转化为 5V
 */
public class VoltageAdapter implements Voltage5 {
    private Voltage220 mVoltage220;

    public VoltageAdapter(Voltage220 voltage220) {
        mVoltage220 = voltage220;
    }

    @Override
    public int getVoltage5() {
        System.out.println("经过适配的电压 5V");
        return mVoltage220.getVoltage220();
    }

    public void setVoltage220(Voltage220 voltage220) {
        mVoltage220 = voltage220;
    }
}
public class Client {

    public static void main(String args[]) {
        VoltageAdapter adaper = new VoltageAdapter(new Voltage220());
        adaper.getVoltage5();
    }
}

总结

Adapter 模式的经典实现在于将原本不兼容的接口融合在一起,使之能够很好地进行合作。

优点:

缺点:



相关文章:

设计模式整理(1) 代理模式
设计模式整理(2) 单例模式
设计模式整理(3) Builder 模式
设计模式整理(4) 原型模式
设计模式整理(5) 工厂模式
设计模式整理(6) 策略模式
设计模式整理(7) 状态模式
设计模式整理(8) 责任链模式
设计模式整理(9) 观察者模式
设计模式整理(10) 适配器模式
设计模式整理(11) 装饰模式
设计模式整理(12) 中介者模式

上一篇下一篇

猜你喜欢

热点阅读