本文共 1624 字,大约阅读时间需要 5 分钟。
使用者依赖的接口与提供者的接口不匹配时,就加一层适配,而不改两端的代码
作用:将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本接口不匹配的两个类可以协同工作,别名为包装器Wrapper,比如220V交流电->适配器->12V直流电
核心思想:将已有的功能通过适配器变成当前需要的功能
类适配器
Adapter类,通过继承src类,实现dst类接口,完成src->dst的适配/***src,我们有220v交流电*/public class Voltage220 { public int output220V() { int src = 220; System.out.println("我是" + src + "V"); return src; }}/***dst,我们想要5V直流电*/public interface Voltage5 { int output5V();}/***adapter,集成src,实现dst接口,完成src->dst的适配*/public class VoltageAdapter extends Voltage220 implements Voltage5 { @Override public int output5V() { int src = output220V(); System.out.println("适配器工作开始适配电压"); int dst = src / 44; System.out.println("适配完成后输出电压:" + dst); return dst; }}
对象适配器(常用)
Adapter类,通过持有src类,实现dst类接口,完成src->dst的适配。相比类适配,只需要修改Adapter适配器/***adapter,持有src,实现dst接口,完成src->dst的适配*/public class VoltageAdapter2 implements Voltage5 { private Voltage220 mVoltage220; public VoltageAdapter2(Voltage220 voltage220) { mVoltage220 = voltage220; } @Override public int output5V() { int dst = 0; if (null != mVoltage220) { int src = mVoltage220.output220V(); System.out.println("对象适配器工作,开始适配电压"); dst = src / 44; System.out.println("适配完成后输出电压:" + dst); } return dst; }}
接口适配器模式
当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求,它适用于一个接口不想使用其所有的方法的情况转载地址:http://pwpxi.baihongyu.com/