1 适配器模式基本介绍
1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,
让原本因接口不匹配不能一起工作的两个类可以协同工作
2)适配器模式属于结构性模式
3)主要分为3类:类适配器,对象适配器,接口适配器
2 工作原理
1、适配器模式:将一个类的接口转换成另一种接口,让原本不兼容的类可以兼容
2、从用户的角度看不到被适配者,是解耦的
3、用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法
4、用户收到反馈结果,感觉是和目标接口交互
3 类适配器模式
1、类适配器模式简介
基本介绍: Adapter类,通过继承被适配的类,实现适配接口,
2、适配器模式实例
将220v的电压转化为5v输出!
代码实现
//被适配者: 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()); } }
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、接口适配器模式介绍
适用于一个接口不想使用其所有方法的情况
当不需要全部实现接口提供的方法时,可以设计一个抽象类实现接口,并未该接口中的每个方法提供一个默认实现(空方法),那么该抽象类的子类可以有选择的覆盖父类的某些方法来实现需求